Java 将txt写入文件而不追加
好的,我正在实现一个系统,我正在将计数保存在Java 将txt写入文件而不追加,java,string,io,Java,String,Io,好的,我正在实现一个系统,我正在将计数保存在.txt文件中 计数是一个整数 我唯一的问题是,不是取代以前的计数;e、 g "78" -> "79" "78" -> "7879" 它将新计数添加到上一个计数中;e、 g "78" -> "79" "78" -> "7879" 我的代码是: private static void saveCount(int inCount) throws FileNotFoundException, IOException {
.txt
文件中
计数是一个整数
我唯一的问题是,不是取代以前的计数;e、 g
"78" -> "79"
"78" -> "7879"
它将新计数添加到上一个计数中;e、 g
"78" -> "79"
"78" -> "7879"
我的代码是:
private static void saveCount(int inCount) throws FileNotFoundException, IOException {
BufferedReader fbr = new BufferedReader(new FileReader("count.txt"));
try (FileWriter fw = new FileWriter("count.txt", (fbr.readLine() != null))) {
String count = Integer.toString(inCount);
fw.write(count);
}
}
您正在启用附加。将
(fbr.readLine()!=null)
替换为false
以禁用追加,如下所示:
private static void saveCount(int inCount) throws FileNotFoundException,
IOException {
BufferedReader fbr = new BufferedReader(new FileReader("count.txt"));
try (FileWriter fw = new FileWriter("count.txt", false)) {
String count = Integer.toString(inCount);
fw.write(count);
}
}
FileWriter
构造函数的第二个参数是布尔标志append
。将其设置为false以覆盖文件而不是追加。您使用的FileReader的构造函数有一个参数append(布尔值)。如果它为真,您将附加文件的内容(并拥有7879)。如果为false,则文件内容将被覆盖
看起来fbr.readLine()不是空的,所以每次都要追加内容。使用BufferedWriter而不是BufferedReader,完成后关闭它
BufferedWriter out = new BufferedWriter(new FileWriter("count.txt"));
out.write(Integer.toString(inCount));
out.close();
@JunedAhsan它工作得很好。也许在以前的编辑中有什么内容被破坏了?注意:您可以从您的答案中删除
BufferedReader
,因为它不再需要。我知道,但我不想违反用户原始代码,只想提出解决问题的方法。-1,“不想违反用户原始代码”不是在代码中留下无用积垢的借口。您已经删除了唯一使用fbr
的部分,为什么不完成此项工作?