File file = new File("d.txt");//错误的的路径是:d.txt,(虽然绝对路径是:H:\\eclipse\\workspace\\Socket\\d.txt)在寻找父路径的时候就是以d.txt路径去寻找的,d.txt的父路径为null。你可以使用getPath()试一下File file = new File("H:\\eclipse\\workspace\\Socket\\d.txt");//正确的的路径是:H:\\eclipse\\workspace\\Socket\\d.txt,也就以这个路径去寻找父路径。
相对路径中去找文件:
String name = this.getClass().getResource("d.txt").getPath();
return path;
} public File getParentFile() {
String p = this.getParent();
if (p == null) return null;
return new File(p, this.prefixLength);
} public String getParent() {
int index = path.lastIndexOf(separatorChar);
if (index < prefixLength) {
if ((prefixLength > 0) && (path.length() > prefixLength))
return path.substring(0, prefixLength);
return null;
}
return path.substring(0, index);
}path是d.txt,当然getParentFile会得到null
你讲了以后,我明白了
额,我这里还有一个问题,希望你帮忙解答一下,行么 ?
http://bbs.csdn.net/topics/390652725
return path;
} public File getParentFile() {
String p = this.getParent();
if (p == null) return null;
return new File(p, this.prefixLength);
} public String getParent() {
int index = path.lastIndexOf(separatorChar); if (index < prefixLength) {
if ((prefixLength > 0) && (path.length() > prefixLength))
return path.substring(0, prefixLength);
return null;
}
return path.substring(0, index);
}
这种路径是相对 System.getProperty("user.dir") 而言的。
这种路径是相对 System.getProperty("user.dir") 而言的。是的
楼主兄弟,你好,首先我们对您出错的原因进行一次分析问题一、 File file = new File("d.txt");// 错误的解答:
1、对于File类构造方法,他需要的传入的是一个“路径名字符串”,而并不是一个单纯的文件名,对吧兄弟。 2、对于jvm来说,在classloader加载时候,你所以存放的d.txt也会随classloader进行加载,因此他们属于同级目录。 3、如果楼主真心想采用d.txt来读取的话。可以使用classloader加载原理来读取。此方法需要注意,静态方法(通过当前的classloader加载的类来获取当前d.txt被加载的路径)
String path = this.getClass().getResource("d.txt").getPath();
注意:this是不被静态方法所使用的。通过具体的classloader加载的指定类来获取当前d.txt被加载的路径
String path2 = Test.class.getResource("d.txt").getPath();如下方式如何是正确的,我相信,楼主兄弟应该已经懂了吧。在下就不卖弄了。呵呵,祝楼主好运。
//File file = new File("H:\\eclipse\\workspace\\Socket\\d.txt");//正确的
楼主兄弟,你好,首先我们对您出错的原因进行一次分析问题一、 File file = new File("d.txt");// 错误的解答:
1、对于File类构造方法,他需要的传入的是一个“路径名字符串”,而并不是一个单纯的文件名,对吧兄弟。 2、对于jvm来说,在classloader加载时候,你所以存放的d.txt也会随classloader进行加载,因此他们属于同级目录。 3、如果楼主真心想采用d.txt来读取的话。可以使用classloader加载原理来读取。此方法需要注意,静态方法(通过当前的classloader加载的类来获取当前d.txt被加载的路径)
String path = this.getClass().getResource("d.txt").getPath();
注意:this是不被静态方法所使用的。通过具体的classloader加载的指定类来获取当前d.txt被加载的路径
String path2 = Test.class.getResource("d.txt").getPath();如下方式如何是正确的,我相信,楼主兄弟应该已经懂了吧。在下就不卖弄了。呵呵,祝楼主好运。
//File file = new File("H:\\eclipse\\workspace\\Socket\\d.txt");//正确的
兄弟好手艺!