我正在开展一个学校项目,我需要使用txt文件初始化我的程序状态。我从未真正处理过阅读文件,因此我使用了教程here 生成与项目一起使用的资源文件夹的路径名。
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("savedState.txt").toURI());
BufferedReader br = new BufferedReader(new FileReader(file));
这很棒!当我尝试写回文件时出现问题。我尝试过使用类似的方法,似乎没有用。使用此代码时,文件仍为空。
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("savedState.txt").toURI());
//File file = new File("/actual file path/savedState.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(file));
最糟糕的是,当我使用实际文件路径(第三行而不是前两行)时,它工作正常。我不确定如何让它发挥作用!
我想我还应该添加正在写的内容(也许我做错了)。这就是它正在开展的工作
for (int i=0;i<tokens.size();i++)
bw.write(tokens.get(i)+',');
bw.close();
tokens是一个ArrayList,类型为String
答案 0 :(得分:0)
尝试:
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
答案 1 :(得分:0)
如果你想写WRITE文件,第三行,即工作的那一行应该是最正确的。 例如,如果文件位于.jar文件或.war文件中,您将能够使用类加载器读取它,但不能写入它。
建议: 像这样打电话给你的程序:
java -Dfilepath=/path/to/file -jar yourjar.jar
然后在你的代码中:
File file = new File(System.getProperty("filepath"));
答案 2 :(得分:0)
Guilherme Mussi告诉我,我所做的事情可能不适合写作。所以我做了更多的工作,发现构建文件路径并不是那么难。这是我最终得到的代码,它适用于阅读和写作。
String fsep = System.getProperty("file.separator");
File file = new File(System.getProperty("user.dir")+
fsep+"src"+fsep+"main"+fsep+"resources"+fsep+"savedState.txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(file));