Java FileWriter实际上根本没有更改文件

时间:2014-08-10 04:54:20

标签: java filewriter

我一直在寻找过去一小时左右试图找到原因,但一无所获。这是一个非常小的文本文件(最多只有4个字符),因此我没有打扰BufferedReaderBufferedWriter。问题在于,虽然我让编写器将变量放入文件甚至关闭文件,但它实际上并没有保留文件中的更改。我在运行包含此代码的方法后立即检查文件,对此进行了测试。

try {
    int subtract = Integer.parseInt(secMessage[2]);
    try {
        String deaths = readFile("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt", Charset.defaultCharset());
        FileWriter write = new FileWriter("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt");
        int comb = Integer.parseInt(deaths) - subtract;
        write.write(comb);
        write.close();
        sendMessage(channel, "Death count updated to " + comb);
    } catch (IOException e) {
        e.printStackTrace();
    }
} catch (NumberFormatException e) {
    e.printStackTrace();
    sendMessage(channel, "Please use numbers to modify death count");
}

编辑:自从被问及以来,这是我的readFile消息:

static String readFile(String path, Charset encoding) throws IOException {
    byte[] encoded = Files.readAllBytes(Paths.get(path));
    return new String(encoded, encoding);
}

我已经测试了它并且它没有错误地返回内容。

EDIT2:发布readFile方法让我想到要尝试的东西,所以我删除了对它的调用(上面的代码也更新了)并再次尝试。它现在写入文件,但不写我想要的。将为此提出新的问题。

2 个答案:

答案 0 :(得分:2)

FileWriter write = new FileWriter(readFile("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt", Charset.defaultCharset()));

您正在尝试编写以deaths.txt内容命​​名的文件。您打算写入文件本身是可能的。

答案 1 :(得分:0)

来自http://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html

FileWriter(String fileName) 给定文件名构造FileWriter对象。

    FileWriter write = new FileWriter(readFile("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt", Charset.defaultCharset()));

目前您正在使用文件的内容而不是文件名。