如何从可运行的jar加载文本文件

时间:2011-11-18 18:37:39

标签: java eclipse file-io

如果我有一个项目里面有一个文本文件,我希望能够读取这个文本文件,它将存储在我的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()但这不允许我将已经写入的文件放入文件对象而不再重写它,或者这个假设是不正确的?

此致

3 个答案:

答案 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对象。