【问题标题】:Java RandomAccessFile truncate from startJava RandomAccessFile 从开始截断
【发布时间】:2012-01-31 22:52:05
【问题描述】:

我知道如何截断 RandomAccess 文件,以便删除末尾的字节。

raf.getChannel().truncate(file.length() - 4);

raf.setLength(file.length() - 4);

但是如何截断 RandomAccessFile 以删除开头的字节?我不需要将此文件的内容写入新文件。我用谷歌搜索并找不到答案。请帮忙。提前致谢。

【问题讨论】:

    标签: java java-io randomaccessfile


    【解决方案1】:

    这不是大多数文件系统支持的操作。该模型是从磁盘上特定位置开始的字节序列。文件是可变长度的并且可以附加,因此从那里截断相对容易。

    因此,您实际上需要复制文件中的所有字节。尽可能避免。管理队列文件(例如日志)的一种技术是拥有一系列文件,然后定期启动一个新文件并在末尾删除一个。

    【讨论】:

    • 感谢@Tom 的提醒。我使用您的信息继续进行以下操作。 fc.transferTo(seek, file.length() - seek, fcTmp);
    • 这也太糟糕了。由于擦除周期数有限,在闪存介质上运行的文件系统非常适合“从头截断”。
    猜你喜欢
    • 2011-07-03
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多