1

我对 Java 还是很陌生,但我遇到了一个我找不到解决方案的问题。我编写了一个读取和写入 txt 文件的程序。当我在 NetBeans 中运行它时,它似乎工作正常,但是当我尝试运行 JAR 文件时,似乎程序无法访问 txt 文件。

我使用以下代码创建了文件:

File data = new File("src/data.txt");

它不起作用的原因可能是在文件的创建中吗?如果不是,那会是什么?

编辑:随着程序的推进,文本文件正在被修改,如果我使用输入流,我将无法写入或更改 txt 文件,我应该改变管理数据的方式吗?( txt 文件)还是有办法让 jar 仍然可以访问 Txt 文件?

4

2 回答 2

7

这个说法

File data = new File("src/data.txt");

依赖于文件系统中存在的文件。您需要将文件作为资源读取,以便 JAR 文件可以独立于文本文件运行

InputStream input = getClass().getResourceAsStream("/path/to/data.txt");

编辑:

我建议使用将文本文件存储为“默认”的策略,然后在需要更改时,在“user.home”下编写一个新文件。在读取任何数据之前检查修改文件是否存在。

于 2013-09-24T14:18:59.650 回答
5

方法1:在你创建jar并运行程序的地方,jar目录下没有名为“src”的文件夹。您应该在 jar 位置的同一目录中创建一个名为“src”的文件夹。这将允许文件写入操作。

方法2:如果要将txt文件保留在jar中,则可以使用:

InputStream in = this.getClass().getClassLoader()
                            .getResourceAsStream("your package path/data.txt");

一个完整的例子:

package com.file.loader;

public class Main {
    public static void main(String[] args) throws IOException {
    InputStream in = Main.class.getClassLoader().getResourceAsStream(
            "com/file/loader/data.txt");
    }
}
于 2013-09-24T14:19:18.657 回答