为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Java中从类路径中真正读取文本文件

如何在Java中从类路径中真正读取文本文件

慕盖茨4494581 2019-06-01 16:47:06
如何在Java中从类路径中真正读取文本文件我正在尝试读取一个在CLASSPATH系统变量中设置的文本文件。不是用户变量。我正试图获得文件的输入流,如下所示:放置文件目录(D:\myDir)在CLASSPATH中,并尝试如下:InputStream in = this.getClass().getClassLoader().getResourceAsStream("SomeTextFile.txt");InputStream in = this.getClass() .getClassLoader().getResourceAsStream("/SomeTextFile.txt");InputStream in = this.getClass().getClassLoader(). getResourceAsStream("//SomeTextFile.txt");放置文件的完整路径(D:\myDir\SomeTextFile.txt)在CLASSPATH中,并尝试上述3行代码。但不幸的是,他们中没有一个在工作,我总是null进入我的输入流in.
查看完整描述

4 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

当使用春天框架(作为实用程序的集合)容器-您不需要使用后一种功能)您可以很容易地使用资源抽象。

Resource resource = new ClassPathResource("com/example/Foo.class");

穿过资源接口可以访问资源,如InputStreamURL乌里档案..将资源类型更改为例如文件系统资源是一个简单的更改实例的问题。


查看完整回答
反对 回复 2019-06-01
?
青春有我

TA贡献1784条经验 获得超8个赞

这是如何使用Java 7 NIO读取类路径上文本文件的所有行:

...import java.nio.charset.Charset;import java.nio.file.Files;import java.nio.file.Paths;...Files.readAllLines(
    Paths.get(this.getClass().getResource("res.txt").toURI()), Charset.defaultCharset());

注:这是如何做到这一点的一个例子。你必须在必要时作出改进。只有当文件实际存在于类路径上时,此示例才能工作,否则当getResource()返回NULL并在其上调用.toURI()时,将引发NullPointerException。

另外,由于Java 7,指定字符集的一种方便方法是使用java.nio.charset.StandardCharsets(这些是,根据他们的javadocs,“保证在Java平台的每个实现上都可用。”)。

因此,如果您知道文件的编码为utf-8,那么就显式地指定字符集。StandardCharsets.UTF_8


查看完整回答
反对 回复 2019-06-01
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

请试试

InputStream in = this.getClass().getResourceAsStream("/SomeTextFile.txt");

您的尝试没有起作用,因为只有你的类能够从类路径加载。您使用了java系统本身的类加载器。


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 2216 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号