Java BufferedWriter - newLine()方法

时间:2014-05-10 20:35:41

标签: java file newline bufferedwriter

我已经遇到了一段时间的问题,并且已经测试了我能想到的所有可能性。不幸的是,这些可能性无效。

基本上,我正在尝试使用Java中的BufferedWriter写入.txt文件。我需要这个设置,以便我可以在每个数据之间有一条线。想象一下这是用Java生成的文本文件,它应该是这样的:

line1

line2

这是我的代码:

public static void main(String[] args) {
    Path path = Paths.get("test.txt");

    if (!Files.exists(path)) {
        try {
            Files.createFile(path);
        } catch (IOException e) {
            System.out.println("Error in creating test.txt! Read the stacktrace 
            below.");
            e.printStackTrace();
        }
    }

    Charset charset = Charset.forName("UTF-8");
    try (BufferedWriter writer = Files.newBufferedWriter(path, charset)) {
        String string = "line1";
        writer.write(string, 0, string.length());
        writer.newLine();
        writer.newLine();

        writer.flush();
    } catch (IOException e) {
        System.out.println("Unable to write to file! Read the StackTrace below.");
        e.printStackTrace();
    }

    try (BufferedWriter writer = Files.newBufferedWriter(path, charset)) {
        String string = "line2";
        writer.write(string, 0, string.length());

        writer.flush();
    } catch (IOException e) {
        System.out.println("Unable to write to file! Read the StackTrace below.");
        e.printStackTrace();
    }
}

这样的输出产生一个文本文件:

line2

现在,我知道我可以结合我的两个尝试/捕获,它会工作。但这只是一个测试表示;在我的实际代码中,我需要单独执行此操作,以便每当触发特定事件时我都可以写入.txt文件。

基本上,newLine()方法不是保存,除非我在它们之后直接写文字。

任何帮助都一如既往地受到赞赏!

1 个答案:

答案 0 :(得分:1)

第二个BufferedWriter,或者更确切地说是第二个隐式FileWriter,会覆盖第一个创建的文件。

按照建议组合语句,或使用追加模式(在这种情况下效率低下)。