【问题标题】:new line in Random Access File in javajava中随机访问文件中的新行
【发布时间】:2013-01-30 19:11:23
【问题描述】:

每当在java中使用RandomAccessFile的'writeBytes'方法时,它都会将文本写入文件的同一行。如何仅使用RandomAccessFile 换行? (没有BufferedReader)。

【问题讨论】:

  • 这就是 javadoc 所说的“写入从文件指针的当前位置开始”。在写入数据之前尝试写入换行符。

标签: java newline randomaccessfile


【解决方案1】:

你可以写一个行分隔符。为了获得当前运行的操作系统的正确行分隔符,您必须查找 line.separator 属性。大致如下:

randomAccessFile.writeBytes(System.getProperty("line.separator"));

【讨论】:

  • 你的方法不对。 write() 不接受 String。您可能应该将其更改为writeChars()。另一种方式是randomAccessFile.writeBytes(System.getProperty("line.separator"));,因为writeBytes() 可以接受String 作为参数。
  • @tom_mai78101 谢谢,已修复。
【解决方案2】:

试试这个:

 RandomAccessFile file = new RandomAccessFile("e:\\demo.txt","rw");
 String originalString = "First line \nSeconf line \n";
 String updatedString = originalString.replace("\n","\r\n");
 file.writeBytes(updatedString);

【讨论】:

  • 基本上使用 '\r\n' 转义序列就可以了。非常感谢,朋友!!
【解决方案3】:
System.getProperty("line.separator");

尝试在其他任何内容之前向文件写入新行,因为它将从上次写入停止的位置开始写入。

【讨论】:

    【解决方案4】:

    换行符的 ASCII 值为 10 。您可以将此值存储在一个字节中,然后使用“writeBytes”,这将导致一个新行。

    【讨论】:

      【解决方案5】:
      String data = "New Line";
      RandomAccessFile raf = new RandomAccessFile(myFile);
      raf.writeBytes("\r\n" + data);
      

      这将在“文本”之前添加一个新行(windows 样式/CRLF)。

      【讨论】:

        猜你喜欢
        • 2010-09-17
        • 2019-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-16
        • 1970-01-01
        • 2017-09-27
        • 1970-01-01
        相关资源
        最近更新 更多