2012-03-14 37 views
1

我有一个安装程序,在该程序中我使用了一个txt文件(读取和写入它)。目前我已经安装了这样的设备,以便在我的机器上使用本地文件路径,但是我需要将它打包到可执行JAR中。要做到这一点,我已经试过了以下交换文件路径字符串:使用getResource()与txt文件(Java)的问题

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

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

附加信息:

这里是试图读取&写txt文件,当我收到错误消息:

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

未来,请详细说明错误,而不是只说“我得到一堆错误”。请阅读http://tinyurl.com/so-hints – 2012-03-14 18:31:43

回答

3

,那么您已经给出的代码将无法编译,因为Class.getResource返回URL,而不是一个String。您不能将资源视为“仅仅是另一个文件” - 因为它不是。

你应该根本上改变什么需要阅读该文件以接受InputStream,而不是一个文件名,然后通过呼吁getResourceAsStream()的结果。

1

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

你可能想要做的:

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

感谢您的评论,但是当我尝试使用文件路径时,它抛出了java.io.FileNotFoundException,尽管事实上文件路径是100%正确的,我已经检查它。这有什么原因会发生? – 2012-03-14 18:41:24

0

如果您希望直接写入JAR中的文本文件,那么我的朋友一直都是错的!请张贴更多的代码,让我们了解您想要达到的目标以及您认为可以完成的目标。

1

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

仅供阅读,资源可位于应用程序类路径上的Jar中。应用程序类路径上的资源非常少(在生产中)是可写的。这个文本文件很可能需要放在可复制的路径中(例如,子目录user.home - 其中子目录基于包名称)并用作该路径的File

或者换一种说法。我认为你正在追求错误的道路,以实现目标。

+1

好点:应该克隆JAR中的原始文件以在用户空间中生成工作副本。 – trashgod 2012-03-15 07:49:06

+0

@trashgod是啊,你说什么 - *“克隆在用户空间中生成工作副本”*。我试图想到这些话,但他们躲过了我。 ;) – 2012-03-15 08:03:15