java io 文件路径问题
首先我写出代码:
public class test {
public static void main(String[]args) throws Exception{
File file = new File("d.txt");//错误的
//File file = new File("H:\\eclipse\\workspace\\Socket\\d.txt");//正确的
System.out.println(file.getAbsolutePath());
if(!file.getParentFile().exists()){
file.getParentFile().mkdirs();
}else{
System.out.println("oh,yse !");
}
}
}
这个代码,存在于H:\\eclipse\\workspace\\Socket文件夹中,
为什么File file = new File("d.txt");就报错,
File file = new File("H:\\eclipse\\workspace\\Socket\\d.txt");就正确?
不是说,直接写文件名就默认所在工程的路径么?
那么,为什么File file = new File("d.txt");却父类文件getParentFile()为null?
而写全路径H:\\eclipse\\workspace\\Socket\\d.txt就有了?
-------------
注:我用的是Eclipse --------------------编程问答-------------------- 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,也就以这个路径去寻找父路径。
--------------------编程问答-------------------- 楼主 你编写java类每次运行都是被虚拟机编译成class文件之后运行的,所以直接指定d.txt 肯定找不到。
相对路径中去找文件:
String name = this.getClass().getResource("d.txt").getPath(); --------------------编程问答-------------------- 看一下File类的源码就很明了了
public String 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 --------------------编程问答-------------------- 你这里应该写绝对路径 --------------------编程问答-------------------- d.txt放到工程的src目录下去 --------------------编程问答-------------------- 默认的目录是只读吧? --------------------编程问答--------------------
你讲了以后,我明白了
额,我这里还有一个问题,希望你帮忙解答一下,行么 ?
http://bbs.csdn.net/topics/390652725 --------------------编程问答-------------------- 好贴啊,学到了不少知识,哈哈 --------------------编程问答--------------------
呵呵,谢谢 ... --------------------编程问答-------------------- File file = new File("d.txt"); 寻找的是工程所在路径,请参考http://www.itzlk.com/io/index.jhtml --------------------编程问答-------------------- 3楼正解
public String 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);
} --------------------编程问答--------------------
这种路径是相对 System.getProperty("user.dir") 而言的。 --------------------编程问答-------------------- 擦,那样写肯定不行呀 --------------------编程问答-------------------- 默认的 是 类路径。。classpath
补充:Java , Java SE