代码之家  ›  专栏  ›  技术社区  ›  Cristián Romo

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

  •  2
  • Cristián Romo  · 技术社区  · 17 年前

    我正试图编写一个程序来处理从文件中读取的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();
    

    你好
    那里!

    但文件内容是

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

    3 回复  |  直到 17 年前
        1
  •  9
  •   Tom    17 年前

    你应该尝试使用

    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();
    

    我还没能测试第一个 方法,因为换行符 字符串不作为换行符写入

        2
  •  1
  •   Nate    17 年前

        3
  •  1
  •   Thorbjørn Ravn Andersen    17 年前

    考虑使用PrintWriters来获取从例如System.out中已知的println方法