Java 中如何逐行写入一个文件?
原文地址:http://www.programcreek.com/2011/03/java-write-to-a-file-code-example/
本文总结了以下几个方式:
1. FileOutputStream
public static void writeFile1() throws IOException {
File fout = new File("out.txt");
FileOutputStream fos = new FileOutputStream(fout);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
for (int i = 0; i < 10; i++) {
bw.write("something");
bw.newLine();
}
bw.close();
}
这个例子中使用 FileOutputStream,同样你也可以使用 FileWriter 或 PrintWriter,它们对于文本文件操作通常也是足够好的。
2. FileWriter
public static void writeFile2() throws IOException {
FileWriter fw = new FileWriter("out.txt");
for (int i = 0; i < 10; i++) {
fw.write("something");
}
fw.close();
}
3. PrintWriter
public static void writeFile3() throws IOException {
PrintWriter pw = new PrintWriter(new FileWriter("out.txt"));
for (int i = 0; i < 10; i++) {
pw.write("something");
}
pw.close();
}
4. OutputStreamWriter
public static void writeFile4() throws IOException {
File fout = new File("out.txt");
FileOutputStream fos = new FileOutputStream(fout);
OutputStreamWriter osw = new OutputStreamWriter(fos);
for (int i = 0; i < 10; i++) {
osw.write("something");
}
osw.close();
}
5. 它们之间的不同
Java Doc 中这样写:
FileWriter是用于编写字符文件的便捷类。 该类的构造函数指定了默认字符编码和默认字节缓冲区大小。 如果要自己指定这些值,请在FileOutputStream上构造一个OutputStreamWriter。
PrintWriter将格式化的对象陈述打印到文本输出流。 它实现了PrintStream中的所有打印方法。 但它不包含用于编写原始字节的方法,所以程序应使用未编码的字节流。
其实它们的主要区别在于 PrintWriter 提供了一些额外的格式化操作,例如 println 和 printf 等。 另外,如果出现任何 I/O 故障,FileWriter 将抛出 IOException 异常,而 PrintWriter 方法则不会抛出 IOException,它设置一个可以使用 checkError() 获取的布尔标志。 PrintWriter 在写入数据的每个字节后自动调用 flush,而在使用 FileWriter 时,调用者必须手动调用 flush。