我有一个设置,我在程序中使用了一个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)
答案 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内的文本文件,那么我的朋友那么你一直都错了!请为我们发布更多代码,以了解您想要实现的目标以及您认为可以完成的任务。