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

如何在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.


慕盖茨4494581
浏览 2217回答 4
4回答

杨__羊羊

当使用春天框架(作为实用程序的集合)或容器-您不需要使用后一种功能)您可以很容易地使用资源抽象。Resource resource = new ClassPathResource("com/example/Foo.class");穿过资源接口可以访问资源,如InputStream, URL, 乌里或档案..将资源类型更改为例如文件系统资源是一个简单的更改实例的问题。

青春有我

这是如何使用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

慕桂英546537

请试试InputStream in = this.getClass().getResourceAsStream("/SomeTextFile.txt");您的尝试没有起作用,因为只有你的类能够从类路径加载。您使用了java系统本身的类加载器。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java