使用带有txt文件的getResource()的问题(Java)

时间:2012-03-14 18:27:42

标签: java file-io resources

我有一个设置,我在程序中使用了一个txt文件(读取和写入)。目前我已经设置好了,我在我的机器上使用本地文件路径,但是我需要将它打包成可执行的JAR。为此,我尝试将文件路径字符串切换为以下内容:

String filepath = MyClass.class.getResource("/resources/textfile.txt");

然而,当我运行这个时,我得到了一堆错误。在谷歌搜索方法后,我发现了类似的方法getResourceAsStream我也尝试过。这似乎返回一个InputStream对象,但我理想地需要将filepath作为字符串。这可能吗?如果不是我的选择?

其他信息:

以下是我在尝试阅读时收到的错误消息。写入txt文件:

java.io.FileNotFoundException:/Users/Fred/Documents/Eclipse%20Projects/RandomProject/bin/resources/textfile.txt (No such file or directory)

4 个答案:

答案 0 :(得分:3)

您提供的代码无法编译,因为Class.getResource会返回URL,而不是String。您不能将资源视为“只是另一个文件” - 因为它不是。

您基本上应该更改读取文件的所有内容以接受InputStream而不是文件名,然后传递调用getResourceAsStream()的结果。

答案 1 :(得分:1)

该方法返回URL,而不是String。它的签名是public URL getResource(String name)

您可能想要这样做:

String filepath = MyClass.class.getResource("/resources/textfile.txt").getPath();

答案 2 :(得分:1)

  

我有一个设置,我在程序中使用了一个txt文件(读取和写入)。

对于只读,资源可以位于应用程序类路径的Jar中。应用程序类路径上的资源是可写的非常罕见(在生产中)。此文本文件很可能需要放在可重现的路径中(例如,user.home的子目录 - 其中子目录基于包名称)并用作File路径。

或者以不同的方式。我认为你正在追求错误的道路,以实现目标。

答案 3 :(得分:0)

如果您希望直接写入JAR内的文本文件,那么我的朋友那么你一直都错了!请为我们发布更多代码,以了解您想要实现的目标以及您认为可以完成的任务。