问题
我写了下面这段代码,目的文件地址是localFilePath,内容是line,咋一看没什么问题,但是代码执行后,目的文件却没有写进内容。
public static void writeLine(String localFilePath, String line) throws IOException {
BufferedWriter bufferedWriter = getBufferedWriter(localFilePath);
bufferedWriter.write(line);
}
原因
原来BufferedWriter是缓冲输出流,意思是调用BufferedWriter的write方法时候。数据先从JVM内存写入到缓冲区里,并没有直接写到目的文件。
解决方法
调用BufferedWriter的flush()方法时,会刷新,也就是把数据写入到目标文件。或者可以调用BufferedWriter的close()方法,该方法会在关闭该输入流之前先调用flush()方法,也会把数据写入到目标文件里。
衍生思考
有人可能会想,不管怎么样最后都会调用close()方法的,所以应该没事。但是如果在调用close()之前就需要将数据写到目的文件的话,就需要立即调用flush()方法了。