io流文件读取时相对目录出错

这是我的主要代码
public class TestPrintIo2 {
public static void main(String[] args) {
String filename = args[0];
System.out.println(filename);
if(filename!=null){
a(filename,System.out);
}
}
public static void a(String f,PrintStream ps){
try {
BufferedReader br = new BufferedReader(new FileReader(f));
String string = null;
while((string = br.readLine())!=null){
ps.println(string);
}
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("无法读取文件");
}
}
}
下面是我给args传的参数
图片说明然后我所传的参数是同目录下的文件图片说明但是运行结果出错所以想问一下图片说明想问一下出错的原因是什么,是相对路径写错了吗?

 FileReader(String fileName)

请注意: 这里filename必须是文件的 全路径 ,这是解答这个题目的关键。

题目中代码应该修改为:

 try {
            f = new File("").getAbsolutePath() + "\\src\\" + f; //增加此行
            BufferedReader br = new BufferedReader(new FileReader(f));
            String string = null;
            ................

**其中 new File("").getAbsolutePath() 取得取得当前工作目录的路径 **,也算是一个小技巧。
你可以打印观察 f 的值, 就会有直观印象

用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢。

嗯,是,相对路径写错了。
因为你的文件是在包里面的,所以它的相对路径前应该有包名。
相对路径应该是: src//cn.ecjtu.syj.com.io//TestFileReader.java

相对路径写错了,,,

你这样读的文件 路径为 TestFileReader.java 这不能作为路径来读

相对路径这样写 “../TestFileReader.java”
".." 两个点代表上层目录 不理解的话“../TestPrintIo2.java”这个就是你这个java文件,,
"." 一个点代表当前目录,,和这两个java目录同级,,所以需要到上层目录然后再来找 TestFileReader.java这个文件。。

没明白还可以追问,楼上那样写 src//cn.ecjtu.syj.com.io//TestFileReader.java不太对头,,我感觉