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,同样你也可以使用 FileWriterPrintWriter,它们对于文本文件操作通常也是足够好的。

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 提供了一些额外的格式化操作,例如 printlnprintf 等。 另外,如果出现任何 I/O 故障,FileWriter 将抛出 IOException 异常,而 PrintWriter 方法则不会抛出 IOException,它设置一个可以使用 checkError() 获取的布尔标志。 PrintWriter 在写入数据的每个字节后自动调用 flush,而在使用 FileWriter 时,调用者必须手动调用 flush

results matching ""

    No results matching ""