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\。

  1. 同理:如果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"