[Java] 在 jar 文件中读取 resources 目录下的文件
2017-01-18 22:50
453 查看
注意两点:
1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中。
2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取。
a.txt 是被读取的资源文件。
项目右击 -> properties -> Java Build Path -> Source -> 把 resources 目录添加到 build path 中。
如果没有添加到 build path 中,导出为一个 Runnable JAR 文件后,运行会报错 Exception in thread "main" java.lang.NullPointerException,解压 jar 后会发现,a.txt 文件没有存在于 jar 文件中。
把 resources 加入到 build path ,使得 resources 目录的文件被包含在 jar 的内部首层路径中。解压 jar ,目录结构如下:
1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中。
2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取。
例子
新建一个 maven 目录
App.java 用于读取 resources 中的 a.txt 内容。a.txt 是被读取的资源文件。
grs@grs App $ tree . ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── tony │ │ │ └── App │ │ │ └── App.java │ │ └── resources │ │ └── a.txt
把资源目录添加到 build path 中
项目右击 -> properties -> Java Build Path -> Source -> 把 resources 目录添加到 build path 中。如果没有添加到 build path 中,导出为一个 Runnable JAR 文件后,运行会报错 Exception in thread "main" java.lang.NullPointerException,解压 jar 后会发现,a.txt 文件没有存在于 jar 文件中。
把 resources 加入到 build path ,使得 resources 目录的文件被包含在 jar 的内部首层路径中。解压 jar ,目录结构如下:
grs@grs app.jar $ tree . ├── META-INF │ └── MANIFEST.MF ├── a.txt └── tony └── App └── App.class
代码实现
将 resources 目录设置为 build path 后, a.txt 文件被拷贝到 jar 的首层,所以采用 /a.txt 路径读取。采用 stream 方式读取,确保能读到打包成 jar 内部资源的文件。package tony.App; import java.io.IOException; import java.io.InputStream; public class App { public static void main( String[] args ) throws Exception { System.out.println( "Hello World! --- " ); App app = new App(); app.readResources(); } public void readResources() throws IOException{ InputStream is = this.getClass().getResourceAsStream("/a.txt"); System.out.println((char)is.read()); is.close(); } }
相关文章推荐
- java resources目录下配置文件的读取操作封装类
- Java如何读取Resources目录下的文件
- Java中使用Jar包时读取当前jar文件所在的目录工具
- java:在分布式项目中读取项目根目录下的文件(jar包也可用)
- java读取ApplicationResources.properties资源文件
- java 文件 读取目录下的所有文件(包括子目录)
- 从 Java 档案 (JAR) 中读取文件
- 从 Java 档案 (JAR) 中读取文件
- Java的目录文件读取
- java 从jar包中读取资源文件
- java读取jar中指定的文件
- 从Java档案(JAR)中读取文件
- Java中读取某个目录下的所有文件和文件夹
- 从ApplicationResources.properties中读取数据对文件进行操作.java
- 从Java的jar文件中读取数据
- java 如何读取jar包外的properties文件(转)
- JavaIO——java如何读取jar包自身内部的属性文件
- Java读取一个目录(文件夹)下的文件例子
- 从 Java 档案 (JAR) 中读取文件
- core java ziptest 第12章如何从zip文件或者jar文件中读取数据