读取Java项目中的文件
eclipse中项目结构
对应到磁盘上的目录结构
1.文件位于项目根目录下
File file1 = new File("folder1/a.xml");
System.out.println(file1.exists()); // true
File file2 = new File("b.xml");
System.out.println(file2.exists()); // true
InputStream in= new FileInputStream("folder1/a.xml");
System.out.println(in.available()); // 38字节
2.文件位于类路径下,可利用Class
对象或者ClassLoader
对象去在类路径下查找文件
InputStream inputStream1 = HelloWorld.class.getClassLoader().getResourceAsStream("c.xml");
System.out.println(inputStream1.available()); // 38字节
InputStream inputStream2 = HelloWorld.class.getResourceAsStream("/c.xml");
System.out.println(inputStream2.available()); // 38字节
注意:Class对象的getResourceAsStream(String path)
方法的参数加 /
才是在类路径下查找文件
Class对象与ClassLoader对象的getResourceAsStream(String path)方法区别
1.Class对象的getResourceAsStream(String path)
中的path可以以 /
开头,也可以不以 /
开头。若以 /
开头,表示在类路径根目录下查找,不以 /
开头,表示在当前.java
文件编译后.class
文件所在的目录中找
2.ClassLoader对象的getResourceAsStream(String path)
中的path不以/开头!,表示在类路径根目录下查找
类路径根目录(类路径)
.java
文件编译后的.class
文件除去所有包路径后所在的目录,所有的.class
文件都会放到该目录下。若.java
文件是放在某个包下,最终在类路径下会有多级包路径