Java RandomAccessFile删除原始文本

时间:2017-01-26 14:01:17

标签: java file-io randomaccessfile

所以我使用RandomAccessFile在java中进行读写。但是当我向文件写一个字符串时,文件的当前内容被覆盖。这是我的代码

<h1 class="skew">HELLO WORLD</h1>

这是我的文件内容

    import java.io.RandomAccessFile;
public class hello{
  public static void main(String[] args){
    RandomAccessFile a;
    try{
      a = new RandomAccessFile("a.txt", "rw");
      System.out.println(a.readLine());
      a.writeUTF("another text");
    }
    catch(Exception e){
      e.printStackTrace();
    }
  }
}

但是当我运行该程序时,它变为

101 yes no  yes no
102 no  no  yes no
103 yes no  yes no
104 no  no  yes no
105 no  yes no  no
106 yes yes yes no

我做错了什么?

2 个答案:

答案 0 :(得分:0)

我不完全确定这是否是您的问题,但我注意到RandomAccessFile上有一个seek方法,允许您将文件指针移动到文件末尾进行写入。

答案 1 :(得分:0)

您需要找到文件的长度

long fileLength = a.length();

然后你需要将文件指针偏移到那个位置,这样你就可以写入它。

a.seek(fileLength);

这将解决您的问题。 另外,您需要关闭资源。也许尝试使用资源:

 try (RandomAccessFile a = new RandomAccessFile("a.txt", "rw")) {
            long fileLength = a.length();
            a.seek(fileLength);
            System.out.println(a.readLine());
            a.writeUTF("another text");
        } catch (Exception e) {
            e.printStackTrace();
        }