概述
注意两点:
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 内部资源的文件。
packagetony.App;importjava.io.IOException;importjava.io.InputStream;public classApp
{public static void main( String[] args ) throwsException
{
System.out.println("Hello World! --- ");
App app= newApp();
app.readResources();
}public void readResources() throwsIOException{
InputStream is= this.getClass().getResourceAsStream("/a.txt");
System.out.println((char)is.read());
is.close();
}
}
最后
以上就是无限毛豆为你收集整理的java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件的全部内容,希望文章能够帮你解决java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复