如果我有一个项目里面有一个文本文件,我希望能够读取这个文本文件,它将存储在我的runnable jar中,那么我该怎么做呢?目前我有这样的设置
public void someMethod()
{
File f = new File("aFileInEclipseResourcesFolder.txt");
doSomethingWithFile(f);
}
private void doSomethingWithFile(File f)
{
//print the data in the file;
}
问题是,如果我使用这种方法,应用程序无法找到该文件,但如果我使用文件的硬编码路径,那么它的工作原理。我知道你可以使用getClass().getResourceAsStream()
但这不允许我将已经写入的文件放入文件对象而不再重写它,或者这个假设是不正确的?
此致
答案 0 :(得分:1)
getResourceAsStream提供了一个可以使用的InputStream,就像FileInputStream一样。然后你可以使用:
InputStream is = getClass().getResourceAsStream("a/b/c/aFileInEclipseResourcesFolder.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8")); // Or "Cp1252"?
...
答案 1 :(得分:0)
当我在一年前遇到这个问题时,我找到的唯一解决方案是找到jar文件的位置(实际上只是一个zip文件),浏览它并找到我想要的文件。
有更好的方法,但它们从来没有为我工作(去图),所以保持这是最后的手段。
答案 2 :(得分:0)
您不想使用想要的getResourceAsStream()
public URL getResource(String name)
URL将为您提供资源的路径,您可以从中创建一个File对象。