【问题标题】:Java: Replace part of file without writing the entire file againJava:替换部分文件而不再次写入整个文件
【发布时间】:2013-10-24 01:53:28
【问题描述】:

是否可以在不将整个文件重写到磁盘的情况下替换部分文件内容。 假设我有一个非常大的几个 GB 的文件,我如何替换字节,让我们说位置 100 到 200 而不重写整个文件?

作为额外的奖励,我需要一个不使用任何功能的解决方案,它永远不会超过 java 1.4。

【问题讨论】:

  • JAVA 1.4?!?!?!?这些真的是必要的要求吗?
  • 我认为不可能有几个尺寸更合理的飞镖
  • 我使用过 1.5 的系统,但这实际上很疯狂。你能告诉我这将在哪里使用吗?
  • 是的。遗留代码非常好。不,我不能减小文件大小。但 RandomAccessFile 似乎是对的。

标签: java io


【解决方案1】:

如果您肯定您将写入完全相同的字节数,则可以使用RandomAccessFile 来完成此操作(自Java 1.0 起可用)。只需打开文件,寻找您需要的任何位置,然后用您的新数据覆盖这些字节。

RandomAccessFile f = new RandomAccessFile(new File("C:\\test\\huge.txt"), "rw");
f.seek(100); // Seek ahead
f.write("here is some new stuff".getBytes())

您还可以以相同的方式从文件的任意点读取,以防您不确切知道需要替换多少数据(例如,您可以填充/截断您正在写入的任何内容以避免做某事很意外)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-30
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    相关资源
    最近更新 更多