Java写入文件不工作,路径生成错误? (阅读作品)

时间:2018-06-03 20:52:34

标签: java classloader filewriter bufferedwriter getresource

我正在开展一个学校项目,我需要使用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

3 个答案:

答案 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));