Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FileWriter根本不改变文件_Java_Filewriter - Fatal编程技术网

Java FileWriter根本不改变文件

Java FileWriter根本不改变文件,java,filewriter,Java,Filewriter,在过去的一个小时左右,我一直在寻找原因,但什么也没找到。这是一个非常小的文本文件,最多只有4个字符,因此我没有使用BufferedReader或BufferedWriter。问题在于,虽然我让编写器将变量放入文件中,甚至关闭文件,但实际上并没有将更改保留在文件中。在运行包含此代码的方法后,我立即检查了文件,从而对此进行了测试 try { int subtract = Integer.parseInt(secMessage[2]); try { String dea

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

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方法让我想到了一些可以尝试的东西,所以我删除了对它的调用,上面的代码也更新了,并再次尝试。它现在写入文件,但不写入我想要的内容。对此将提出新的问题

FileWriter write = new FileWriter(readFile("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt", Charset.defaultCharset()));
您正在尝试编写一个以deaths.txt的内容命名的文件。您可能打算写入文件本身。

来自

FileWriterString文件名 在给定文件名的情况下构造FileWriter对象

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

当前您使用的是文件内容而不是文件名。

readFile。。。做我认为您发布的代码和文本不足以让我们充分理解您的问题以回答它。如果你没有得到一个体面的答案很快,考虑创建和张贴。请不要改变你的要求像这样对我们。您的问题已得到回答,您应该接受第一个正确的解决方案。你现在有一个新问题,这应该是一个新的单独问题的一部分。哦,好的,很抱歉。那我就这么做。我正在试图覆盖内容,以便文本文件中存储的新号码将显示在使用该文件的死亡计数器上。我现在明白你的意思了。代码已被修改,问题已被修改,以询问出现的新问题。结果如何?int subtract=Integer.parseIntsecMessage[2];也就是说,将聊天中收到的消息的部分转换为int变量而不是String变量,这样就可以从文本文件中获取的数字中减去它。
    FileWriter write = new FileWriter(readFile("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt", Charset.defaultCharset()));