字符串中的换行符未写入文件

时间:2009-07-15 18:35:10

标签: java string unicode file-io

我正在尝试编写一个程序来处理从文件读入的unicode字符串。我想到了两种方法 - 一种是我读取包含换行符的整个文件,执行几次正则表达式替换,然后将其写回另一个文件;另一个我在文件中逐行读取并匹配各行并替换它们并将其写出来的地方。我无法测试第一种方法,因为字符串中的换行符不会写为文件的换行符。以下是一些示例代码:

String output = "Hello\nthere!";
BufferedWriter oFile = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("test.txt"), "UTF-16"));

System.out.println(output);
oFile.write(output);
oFile.close();

print语句输出

  

您好
  有!

但文件内容为

  

Hellothere!

为什么我的换行没有写入文件?

3 个答案:

答案 0 :(得分:9)

你应该尝试使用

System.getProperty("line.separator")

这是一个未经测试的例子

String output = String.format("Hello%sthere!",System.getProperty("line.separator"));
BufferedWriter oFile = new BufferedWriter(new OutputStreamWriter(
    new FileOutputStream("test.txt"), "UTF-16"));

System.out.println(output);
oFile.write(output);
oFile.close();
  

我无法测试第一个   方法,因为新的线   字符串不会写为换行符   文件

你确定吗?你能发布一些显示特定事实的代码吗?

答案 1 :(得分:1)

使用System.getProperty(“line.separator”)获取特定于平台的换行符。

答案 2 :(得分:1)

考虑使用PrintWriters来获取println方法,例如,的System.out