我一直在寻找过去一小时左右试图找到原因,但一无所获。这是一个非常小的文本文件(最多只有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方法让我想到要尝试的东西,所以我删除了对它的调用(上面的代码也更新了)并再次尝试。它现在写入文件,但不写我想要的。将为此提出新的问题。
答案 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()));
目前您正在使用文件的内容而不是文件名。