Java中利用bufferedwriter来写文件,遇到的主要问题是程序都正确但一直没有写入文件中。通过查资料才发现,使用bufferedwriter一开始文件都是存储于缓冲区的,要使用flush函数来刷新流或者关闭流才能真正使内部缓冲区的数据写入到指定文件中。具体实现代码如下:
import java.util.*;
import java.nio.*;
import java.nio.file.*;
import java.io.*;
import java.nio.charset.*;
import java.lang.AutoCloseable;
public class WriteFile {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
String[] sayings = {
"Wife:How would you describe me?",
"Husband: ABCDEFGHIJK.",
"Wife: What does that mean?",
"Husband: Adorable, beautiful, cute, delightful, elegant, fashionable, gorgeous, and hot.",
"Wife: Aw, thank you, but what about IJK?",
"Husband: I'm just kidding!" };
Path file = Paths.get(System.getProperty("user.home")).resolve("sss")
.resolve("Sayings.txt");
try {
Files.createDirectories(file.getParent());
} catch (IOException e) {
System.err.println("Error creating directory: " + file.getParent());
e.printStackTrace();// 在命令行打印异常信息在程序中出错的位置及原因
System.exit(1);
}
try{
BufferedWriter fileOut=Files.newBufferedWriter(file, Charset.forName("UTF-16"));
for(int i=0;i<sayings.length;++i)
{
fileOut.write(sayings[i],0,sayings[i].length());
fileOut.newLine();
}
fileOut.flush();//刷新流导致内部缓冲区中所有数据都被写入文件中
System.out.println("File written.");
}catch(IOException e)
{
System.err.println("Error Writing file: "+file);
e.printStackTrace();
}
}
}
实现结果如下:(这个代码是刷新整个文件,而不是在文件内容后面追加内容)