java中文件的相对路径以及jar中文件的读取
2014-04-25 21:01
316 查看
Java中File类的构造函数需要我们传入一个pathname,当我们传入以"/"开头的pathname表示绝对路径,其他均表示相对路径。
一:绝对路径名:是完整的路径名,不需要任何其他信息就可以定位它所表示的文件绝对路径表示从根目录定位文件位置,不需要参照其他文件路径,win中从某个分区磁盘如"e://"开始定位,linux表示从根目录"/"开始定位。
二:相对路径:相对路径名必须使用取自其他路径名的信息进行解释。
当我们将Test.class移动到E:\a路径下执行,输出为:"E:\a",
我们在Eclipse创建项目FilePathTest(路径-->E:\WorkSpace\FilePathTest),并创建如上Test类,结构如下:--a.txt
则此时运行Test输出为"E:\WorkSpace\FilePathTest",也就是相对的目录为项目目录。如果此时需要在Test类中获取项目a.txt文件需要如下使用
File f = new File("bin/a.txt");
三、使用ClassLoader、Class读取配置文件
jvm通过类加载器加载类,我们可以通过类加载器的加载的目录作为相对目录用来读取文件,类加载器提供了
通常使用方式为:Test.class.getClassLoader().getResource("");
Class也提供相同的方法,只不过class相对的目录为"类加载器相对的目录/类的package";
特别注意:当我们需要将项目打包成jar,此时如果使用getResource()读取jar中的配置文件,此时返回的URL格式为jar中特有格式file:\E\Test.jar!\a.txt,这种格式作为File()的路径名是不会被识别的,所以如果我们需要读取jar中的文件则需要使用getResourceAsStream(""),直接获取输入流进行操作。
mmse4j-core-1.9.1.jar中的Dictionary就是因为使用getResource()读取同一个jar中的字典数据(Dictionary.getDefalutPath())才会找不到文件而报错,代码如下:
一:绝对路径名:是完整的路径名,不需要任何其他信息就可以定位它所表示的文件绝对路径表示从根目录定位文件位置,不需要参照其他文件路径,win中从某个分区磁盘如"e://"开始定位,linux表示从根目录"/"开始定位。
二:相对路径:相对路径名必须使用取自其他路径名的信息进行解释。
java.io包中的类总是根据当前用户目录来解析相对路径名。此目录可以通过System.getProperty("user.dir");获取。通常是 Java 虚拟机的调用目录。比如我们有个Test类
public class Test { public static void main(String[] args) { System.out.println(System.getProperty("user.dir")); } }
当我们将Test.class移动到E:\a路径下执行,输出为:"E:\a",
我们在Eclipse创建项目FilePathTest(路径-->E:\WorkSpace\FilePathTest),并创建如上Test类,结构如下:--a.txt
FilePathTest --src --com --Test.java --a.txt --bin --com --Test.class --a.txt
则此时运行Test输出为"E:\WorkSpace\FilePathTest",也就是相对的目录为项目目录。如果此时需要在Test类中获取项目a.txt文件需要如下使用
File f = new File("bin/a.txt");
三、使用ClassLoader、Class读取配置文件
jvm通过类加载器加载类,我们可以通过类加载器的加载的目录作为相对目录用来读取文件,类加载器提供了
public URL getResource(String name) public InputStream getResourceAsStream(String name)
通常使用方式为:Test.class.getClassLoader().getResource("");
Class也提供相同的方法,只不过class相对的目录为"类加载器相对的目录/类的package";
特别注意:当我们需要将项目打包成jar,此时如果使用getResource()读取jar中的配置文件,此时返回的URL格式为jar中特有格式file:\E\Test.jar!\a.txt,这种格式作为File()的路径名是不会被识别的,所以如果我们需要读取jar中的文件则需要使用getResourceAsStream(""),直接获取输入流进行操作。
mmse4j-core-1.9.1.jar中的Dictionary就是因为使用getResource()读取同一个jar中的字典数据(Dictionary.getDefalutPath())才会找不到文件而报错,代码如下:
URL url = Dictionary.class.getClassLoader().getResource("data"); File defalutPath = new File(defPath);
相关文章推荐
- java中文件的相对路径以及jar中文件的读取
- jar包中读取文件系统绝对路径,相对路径,以及jar包内部路径的写法
- java中使用相对路径读取文件的写法总结 以及getResourceAsStream()
- 浅谈java 中文件的读取File、以及相对路径的问题
- java 中文件的读取File、以及相对路径的问题
- Java相对路径读取文件
- java 使用相对路径读取文件
- \t\tJava读取相对路径文件
- java new file 使用相对路径读取文件
- Java相对路径读取文件
- Java读取相对路径文件
- JAVA 使用相对路径读取文件
- java递归读取文件夹中的所有文件以及路径
- Java读取配置文件的几种方法以及路径问题
- Java相对路径读取文件
- Java使用相对路径读取文件
- Java相对路径读取文件
- java 使用相对路径读取文件
- Java如何获取当前的jar包路径以及如何读取jar包中的资源
- java 使用相对路径读取文件