Java相对路径读取文件
1、在Java开发工具的project中使用相对路径_
在project中,相对路径的根目录是project的根文件夹,
创建文件的写法是:
File f = new File("src/com/lavasoft/res/a.txt");
File f = new File(“./a.txt”);
如果想在src下创建目录:
File f = new File(“src/a.txt”);
注意:
路径不以“/”开头;
2、通过CLASSPATH读取包内文件_
读取包内文件,使用的路径一定是相对的classpath路径,
比如a.txt,位于包内,此时可以创建读取a的字节流:
InputStream in = ReadFile.class.getResourceAsStream("/com/lavasoft/res/a.txt");
注意:
这里必须以“/”开头;
*3 由于bin目录(包括web应用中WEB-INF下的classes目录)统称为classpath(类路径) 我们还可以采用下边两种方式来读取。
*
1. 通过字节码对象读取
假如当前类为:Hello.java,它所在的包是:com.mac.util
在Hello.java中:String f = Hello.class.getResource(“/4.txt”).getPath();这种以“/”开头的是以绝对路径方式读取,意思是从bin目录下开始读取4.txt,
” /=D:\eclipse\workspace\test\bin\。
同理:如果4.txt位于com.mac.util包下,与Hello.class处于同一目录。
用绝对路径读就是这样:String f = Hello.class.getResource(“/com/mac/util/4.txt”).getPath();
用相对路径读就是这样:
String f = Hello.class.getResource(“4.txt”).getPath();
_3. 通过类加载器读取
String f = 当前类名.class.getClassLoader().getResource(“4.txt”).getPath()
;注意:通过类加载器读取只能使用相对路径,如果使用绝对路径就读取不到了,比如改成这样:
String f = 当前类名.class.getClassLoader().getResource(“/4.txt”).getPath()
;就不行。
总结
1. 使用工程相对路径是靠不住的。
2. 使用CLASSPATH路径是可靠的。
3. 对于程序要读取的文件,尽可能放到CLASSPATH下,这样就能保证在开发和发布时候均正常读取。
-