我是Java新手,我遇到了一个无法找到解决方案的问题。 我编写了一个读取和写入txt文件的程序。当我在NetBeans中运行它似乎工作正常,但是当我尝试运行JAR文件时,似乎程序无法访问txt文件。
我使用以下代码创建了该文件:
File data = new File("src/data.txt");
为什么它不能用于创建文件?如果不是它会是什么?
编辑: 文本文件正在被修改为程序进展,如果我使用输入流我将无法写入或更改txt文件,我是否应该更改我管理数据的方式? (txt文件)或jar有没有办法访问Txt文件?
答案 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");
}
}