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下,这样就能保证在开发和发布时候均正常读取。
* Java相对路径读取文件* 1、在Java开发工具的project中使用相对路径 在project中,相对路径的根目录是project的根文件夹, 创建文件的写法是: ” File f = new File(“src/com/lavasoft/res/a.txt”); ” File f = new File(“./a.txt”); 如果想在src下创建目录: ”
所谓绝对
路径
,就是指全
路径
,这个
路径
的内容如下:
在linux,必须以 ’ / ‘开头;在win中,必须以盘符(c、d、e)开头;
所谓
相对路径
,就是相对当前的
路径
;
比如 :有一个
路径
是/home/net123
cd /home,从绝对
路径
home进入;
cd net123,相对home进入net123;
2.创建
相对路径
的文件
绝对
路径
的文件好创建,...
1. 文件在src下
class.getResourceAsStream("")获得的是
相对路径
class.getClassLoader().getResourceAsStream("")加载器获得是绝对
路径
Class.getResourceAsStream(String path) :
(1)不以 “/” 开头时,默认是从此类所在的包下取资源。
(2)以**“/”**开头,则是从ClassPath(Src根目录)根下获取。
Class.getClassLoader.getResourceAsStrea
Cannot run program "/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java"