我正在尝试从文件中读取文件,然后在附加文件的同时将其写回。
要读取的文件有5,10
,写完后,文件应该有5,10"\n" 15
。
但不是它有5,10"\n" SI
。
这是我的源代码 -
import java.io.*;
import java.util.*;
public class Ash {
public static void main(String[] args) throws IOException{
File file = new File("ashray.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
Scanner input = new Scanner(reader);
String str = input.nextLine();
String [] sc = str.split(",");
int x = Integer.parseInt(sc[0]);
int y = Integer.parseInt(sc[1]);
int z = x+y;
input.close();
FileWriter fw = new FileWriter(file,true);
BufferedWriter writer = new BufferedWriter(fw);
writer.write(Integer.toString(z));
fw.close();
}
}
答案 0 :(得分:0)
使用PrintWriter
PrintWriter writer = new PrintWriter(file, "UTF-8");
writer.println("print content here");
writer.close();
答案 1 :(得分:0)
问题是您要关闭FileWriter
而不是BufferedWriter
。这意味着您的应用程序正在BufferedWriter
的缓冲区中以未写字符退出。
解决方案:更改
fw.close();
到
writer.close();
关闭BufferedWriter
将关闭它所包含的Writer
。 javadoc这样说。
(您不需要关闭Reader
。关闭Scanner
会关闭它所包含的来源。此外,在这种情况下,两者都不是绝对必要的。但请参阅下文。 )
另请注意,如果这是生产代码,建议使用尝试使用资源以确保文件描述符始终处于关闭状态,而不管方法如何终止。问题是如果方法因为抛出异常而终止,则可以跳过关闭Reader
或Writer
堆栈的语句。这可能会在打开文件时导致资源泄漏和意外错误......稍后。