【问题标题】:Writing to a file with RandomAccessFile#write() [closed]使用 RandomAccessFile#write() 写入文件 [关闭]
【发布时间】:2013-05-02 04:28:39
【问题描述】:

假设我有一个程序可以生成一个名为 data.bin 的二进制文件,然后我使用 data.write(item) 向它写入一堆随机信息,例如:

  RandomAccessFile data = new RandomAccessFile("data.bin","rws");
  Random r = new Random(482010);
  Scanner input = new Scanner(System.in);
  int number = 100;
  byte[] item = new byte[1024];

  System.out.print("How many items (perhaps 800000)\n> ");
  number = input.nextInt();

  for (int i=0; i<number; i++) {
     r.nextBytes(item);
     data.write(item);
  }
  data.close();
    System.out.println("Done");

现在,一旦该文件被完全写入,如果我再次执行 data.write(item),它会覆盖该文件中的所有信息吗?还是继续添加到结尾?

【问题讨论】:

  • 何不自己测试一下看看,或者看看the documentation找不到答案?
  • 我不会使用“rws”,因为它比“rw”慢很多,而且我看不出它对你有什么帮助。我会使用普通的 FileOutputStream,因为这样可以很清楚您是覆盖还是追加。
  • 由于您每次都使用相同的随机种子,您应该写入相同的随机数据,因此如果您覆盖文件,相同长度的文件看起来也完全相同。

标签: java file io overwrite randomaccessfile


【解决方案1】:

是的,因为你已经关闭了文件,当前位置转到文件的开头,现在如果你说 data.write 数据被覆盖。如果您还没有关闭文件,那么当您说 data.write 时,它​​会在文件末尾继续。

【讨论】:

  • 恐怕你是错了。即使在使用 data.close(); 之后,也会在 data.bin 文件的末尾添加一个新内容。
猜你喜欢
  • 1970-01-01
  • 2019-06-25
  • 1970-01-01
  • 2018-07-26
  • 2013-02-14
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 2012-03-24
相关资源
最近更新 更多