2

下一行的 Ascii 值为 10。所以我尝试了这个...

 FileOutputStream os = new  FileOutputStream(f, true);
    os.write(10);  // this should get me to next line ?
    os.write(b);   // b is a byte array...
4

2 回答 2

6

您应该注意管理跨平台行分隔符,这可以通过多种方式检索:

  • System.getProperty("line.separator")
  • System.lineSeparator()(仅限 Java7)
  • String.format("%n")

然后你应该注意使用DataOutputStream包裹在你的周围FileOutputStream,这是因为你将被允许选择许多更好的方法,比如

  • writeChars(String str)
  • writeBytes(String str)
  • writeUTF(String str)

以便您使用最适合您的情况。

另请注意,直接在流上写入字节数组会创建二进制数据,这与使用换行符(而是文本)有些相反。

于 2012-06-16T13:32:16.903 回答
3

在 Windows 上,您需要使用 13 和 10 作为行分隔符(CR、LF) - 即:

os.write(13);
os.write(10);

因此,如果您希望您的应用程序独立于平台,您应该按照 Jack 的建议使用 line.separator 系统属性中的任何内容。

于 2012-06-16T14:30:38.893 回答