1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

时间:2022-12-28 08:37:22

相关推荐

java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

注意两点:

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();

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。