Jar无法访问txt文件

时间:2013-09-24 14:16:57

标签: java file netbeans jar

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

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

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

为什么它不能用于创建文件?如果不是它会是什么?

编辑: 文本文件正在被修改为程序进展,如果我使用输入流我将无法写入或更改txt文件,我是否应该更改我管理数据的方式? (txt文件)或jar有没有办法访问Txt文件?

2 个答案:

答案 0 :(得分:7)

本声明

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

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

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

编辑:

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

答案 1 :(得分: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");
    }
}