0

有什么方法可以显示用户,直接存储在我的 jar 应用程序包(org/something/something.txt)中的 .txt 文件的内容,而不将其存储在用户 pc 或任何临时文件上。文件?我想直接访问它。我应该将它作为资源访问吗?还是作为普通文件访问?

4

5 回答 5

2

您需要使用该getResourceAsStream()方法来获取InputStream.
然后,您可以使用BufferedReader

InputStream inputStream = 
        getClass().getClassLoader().getResourceAsStream("file.txt");
BufferedReader buf = new BufferedReader(new InputStreamReader(inputStream));
String line = "";

while((line = buf.readLine()) != null){
    // something 
}  

我应该将它作为资源访问吗?还是作为普通文件访问?

以我有限的知识,这取决于。如果您根本不希望文件更改,请将其嵌入到 jar 中。否则,将其作为普通文件保存在磁盘上。

请阅读:Java 资源作为文件

于 2013-11-06T15:58:51.103 回答
1

使用类似的东西

InputStream inputStream = 
        getClass().getClassLoader().getResourceAsStream("file.txt");
于 2013-11-06T15:58:06.883 回答
1

是的,您可以将 .txt 文件存储在 .jar 文件中。

编辑:达里奥的回答。

于 2013-11-06T15:58:13.990 回答
1

如果文件在 src/org/something/something.txt

你可以这样称呼它

public static void main(String[] args) {


        InputStream inputStream = null;
    BufferedReader br = null;

    try {
                inputStream = AClassYouAreRunningThisFrom.class.getClassLoader().getResourceAsStream("org/something/something.txt");   
        br = new BufferedReader(new InputStreamReader(inputStream));
        StringBuilder sb = new StringBuilder(); 
        String line;
        while ((line = br.readLine()) != null) {
            sb.append(line+"\n");
        }
        System.out.println(sb.toString());

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    }
于 2013-11-06T16:09:33.543 回答
1

不,不要将文件作为资源检索。这将有效地防止你用它做任何其他事情。内容没有正确加载,这太说明问题了。

于 2013-11-06T16:00:02.250 回答