Java中删除随机访问文件的前几个字节

8
我正在向一个随机访问文件中写入字节。完成操作后,我想从文件中删除前100个字节。我该如何实现这一点?
谢谢你的帮助。
3个回答

5
我找到了一个提供所需功能的方法,它叫做deleteRAF,这里有更多信息。
感谢您的建议。

4
据我所知,您需要将剩余的字节(文件长度-100)复制到一个新文件中。删除文件的前100个字节是不可能的,除非将剩余的字节复制到一个新文件中。
编辑:正如cdhowie所指出的那样,您可以:
  • 跳转到第100个位置,
  • 读取X个字节(超过100个),
  • 跳转到0,
  • 写入X个字节。
  • 然后重复这个过程,直到整个文件都被写入。最后将文件长度设置为比之前少100个字节。如果您想保险起见,不想冒着损坏原始文件的风险,可以先写入临时文件。

    1
    实际上我想重写这个文件。首先固定文件大小,当达到大小限制时,我会删除文件的前几个字节,并将新内容添加到文件末尾。 - sirin
    半年前我遇到了与你类似的问题。恐怕这个问题没有什么简单的解决方法。我的做法是:1)使用字节偏移量100将你的文件中的所有字节复制到一个临时文件中,删除原始文件,将临时文件重命名为原始文件的名称。希望你的文件不是太大,这个操作应该很快。 - BlueVoodoo
    @cdhowie:当然可以。我有时会处理非常大的媒体文件。如果电源、操作系统、应用程序或其他任何东西崩溃,几周的工作可能会一次性损坏。当然,这种情况的概率非常小,但根据这个应用程序的设计目的而定,谨慎起见,Sirin最好还是安全第一。 - BlueVoodoo
    @BlueVoodoo:当然。风险管理必须成为决定选择哪种课程的一部分。但是,如果要生成的文件大小大于可用磁盘空间的一半,那么真的没有太多选择了。;) - cdhowie
    @Pacerier - 只需将文件长度设置为您想要的长度即可。虽然不太熟悉Java,但请查看文件句柄构造函数的setLength()函数。 - BlueVoodoo
    显示剩余10条评论

    0

    这并不是一件简单的事情。您需要从第100个字节开始读取,从第0个字节开始写入 - 也就是说,需要手动将文件内容向下移动100个字节。然后,您可以截断文件,使其长度减少100个字节。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接