Java中的文件路径
今天一定在这里解决这个问题,通过路径读文件一般就3种方式,但他们完全不同:
1. File myFile=new File("");
上面这么写是从当前路径读文件,当前路径指启动当前Java进程的路径,不同的情况这个路径都不一样,在eclipse里一般是当前项目的路径,在 Servlet里一般就是Servlet容器的路径。这个路径的绝对值可以通过(""))取到。这个方法同时可以通过绝对路径取文件,如File myFile=new File("D:\\temp\\"); File myFile=new File("/usr/user1/");
2. InputStream myFileStream = ().getResourceAsStream("");
从当前类所在路径读文件, 应该是和当前这个类在同一个目录中的文件。如果路径前放了个"/", 如().getResourceAsStream("/"),那就是从当前classpath开始读了
myFileStream = ().getClassLoader().getResourceAsStream("");
这个容易和第2种混淆,它是指从classpath开始找文件,前面加不加"/"都一样,其实它相当与().getResourceAsStream("/"), 与这个有相同效果的还有
().getContextClassLoader().getResourceAsStream("")或
().getContextClassLoader().getResourceAsStream("/")
("")或
("/")
下面这个代码
package ;
import ;
class TestPath {
public static void main(String[] args) throws Exception {
(().getContextClassLoader().getResource(""));
(().getResource(""));
((""));
(().getResource(""));
((""));
(("/"));
(new File("").getAbsolutePath());
((""));
}
}
它的输出:
file:/C:/TestArena/bin/
file:/C:/TestArena/bin/
file:/C:/TestArena/bin/
file:/C:/TestArena/bin/
file:/C:/TestArena/bin/com/test/path/
file:/C:/TestArena/bin/
C:\TestArena
C:\TestArena