首页 > 解决方案 > Java写入文件不起作用,路径生成错误?(阅读作品)

问题描述

我正在做一个学校项目,我需要使用 txt 文件初始化程序的状态。我从来没有真正使用过读取文件,所以我使用这里的教程 来生成项目使用的资源文件夹的路径名。

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

标签: javaclassloaderfilewriterbufferedwritergetresource

解决方案


如果要写入文件,则第三行(有效的行)应该是最正确的行。例如,如果文件在您的 .jar 文件或 .war 文件中,您将能够使用 Classloader 读取它,但不能写入它。

建议:像这样调用你的程序:

java -Dfilepath=/path/to/file -jar yourjar.jar

然后在您的代码中:

File file = new File(System.getProperty("filepath"));

推荐阅读