如何用Java创建和编写.Txt文件?

时间:2014-11-23 19:58:16

标签: java bufferedreader

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class FileGenerator {

    /**
     * @param args
     */
    public static void main(String[] args) {

        File outputFile;
        BufferedReader reader;
        FileWriter fileWriter;

        try {
            outputFile  = new File("test.txt");
            outputFile.createNewFile();

            fileWriter = new FileWriter(outputFile, false);

            reader = new BufferedReader(new FileReader("template.txt"));

            StringBuilder sb = new StringBuilder();
            String line = reader.readLine();

            while (line != null) {
                sb.append(line);
                sb.append(System.lineSeparator());
                line = reader.readLine();
            }

            String everything = sb.toString();
            fileWriter.write(everything);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {

        }
    }
}

fileWriter创建test.txt但test.txt中的字符串为空。我希望它不会发生空洞。顺便说一下你可以说"串一切"可以是空的。但它不是。当我尝试没有读者txt我的意思是"字符串一切="一些文字",它发生相同。它是空的

2 个答案:

答案 0 :(得分:1)

该文件为空,因为everything的内容小于操作系统和/或Java的I / O缓冲区,并且程序在没有正确关闭文件的情况下结束。

当您向文件写入内容时,如果您需要确保在不关闭文件的情况下编写文件,请致电flush()。 每当您打开I / O资源时,请在使用后使用close()将其关闭。 close()意味着刷新缓冲区。

Java 7为此提供了 try-with-resources ,如下所示:

try (FileWriter writer = new FileWriter("foo.txt")) {
    writer.write("Hello, world!\n");
    writer.flush();
    // do more stuff with writer
 } // <- closes writer implicitly as part of the try-with-resources feature

答案 1 :(得分:0)

根据评论中的建议,您需要执行fileWriter.close()才能关闭输出流。如果它是一个缓冲的编写器,那么就不必按照此处的说明关闭它。

Is it necessary to close a FileWriter, provided it is written through a BufferedWriter?