Java相对路径读取文件

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下,这样就能保证在开发和发布时候均正常读取。

-
--------------------- 
作者:万一实现了 
来源:CSDN 
原文:https://blog.csdn.net/beloveddarling/article/details/53694103 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/CatEatApple/article/details/84552605