【问题标题】:New line in FileOutputStream [closed]FileOutputStream 中的新行 [关闭]
【发布时间】:2012-06-19 07:10:13
【问题描述】:

下一行的 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...

【问题讨论】:

  • 它不起作用,下一个 lne 不存在,而是从文件中的最后一个字符追加

标签: java outputstream fileoutputstream


【解决方案1】:

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

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

那么你应该注意在你的FileOutputStream 周围使用DataOutputStream,这是因为你可以选择很多更好的方法,比如

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

这样你会使用最适合你的情况。

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

【讨论】:

  • 先生,我知道如果我用 bufferedoutputstream 或 Dataoutputstream 环绕,我可以轻松转到下一行...只是想知道如果 os.write(32);//space 是工作那么为什么不 10*
  • 您使用的是哪个操作系统?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-01-21
    • 2013-07-02
    • 2013-06-26
    • 1970-01-01
    • 2018-07-24
    • 2013-03-01
    • 1970-01-01
    • 2014-08-06
    • 2012-06-18
    相关资源
    最近更新 更多