java - BufferedWriter 行分隔符变为双行分隔符

标签 java linux newline bufferedwriter

BufferedWriter bw = new BufferedWriter(new FileWriter("test.csv", true));
bw.append(System.lineSeparator());
bw.append("Text after writing"));

上面的代码将产生以下结果:

Text already in file before writing

Text after writing

没有System.lineSeparator(),它将变成:

Text already in file before writingText after writing 

我想要的是:

Text already in file before writing
Text after writing

我也试过\n 和 bw.newLine() ,但都给出了相同的结果。为什么会留下 2 行,如何避免?

最佳答案

刚刚尝试了您的代码,它按预期工作。

代码:

try (BufferedWriter bw = new BufferedWriter(new FileWriter("test.csv", true))) {

    bw.append("Text after writing");
    bw.append(System.lineSeparator());

} catch (IOException e) {
    e.printStackTrace();
}

test.csv 之前:

1. Text already in file before writing

test.csv 之后:

1. Text already in file before writing
2. Text after writing

可能您正在编辑的文件已经以新行结尾。您可以考虑在附加之前检查它。

注意:使用了 try-with-resource为了简化代码。

注意:测试于:jre1.8.0_77,Win7(x64)

关于java - BufferedWriter 行分隔符变为双行分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40787795/

相关文章:

linux - 转换格式 HH :MM:SS to seconds in a column with AWK

c++ - 我不想在使用 std::cin 后换行

string - 在 Python 2.7 中替换字符串中的 '\n'

java - 解析外部依赖的类路径

java - 在索引处添加到 ArrayList 时出现 IndexOutOfBoundsException

java - 获取等差数列或等比数列中的下一个序列

Java挂了几秒,但是在gc log中没有发现gc pause

linux - 使用 tee 和 grep 将输出传输到文件中,但看到完整的输出

linux - 使用 staf 将文件从 Linux 复制到远程 Windows 机器

java - 如何在 Java 中按 Enter 键进入文件