【问题标题】:Removing the first bytes in a file删除文件中的第一个字节
【发布时间】:2015-02-22 00:32:19
【问题描述】:

有没有一种方法可以删除文件的前几个字节(从前面截断)而不使用 tail 之类的程序或不必读取文件的全部内容?

那是因为文件大小可能是数百MB甚至GB,因此处理文件内容的读取和重写将非常低效。

我正在寻找的可能是一种解决方案,它允许我偏移文件的开头(在文件分配表中),以便跳过前几个字节。

在 Windows 上,有一个 SetEndOfFile 函数,它允许我通过限制文件末尾来截断文件,从而减小文件大小。

有没有类似StartOfFile 的函数可以让我使文件在其当前起始位置之后几个字节开始?

也欢迎任何其他解决方案,只要它不需要读取/重写文件的全部内容。

【问题讨论】:

标签: file file-manipulation


【解决方案1】:

这在一定程度上取决于文件系统类型,但大多数情况下答案是否定的。文件分配表是指向特定块或索引节点的指针——“文件数据”的连续块。

他们支持缩短 - 从技术上讲,您阅读了整个块,但是当您点击“文件结尾”标记时停止。但是实际上并没有任何“跳过直到”的机制。要删除前几个字节,您可以覆盖它们,或者您必须重写并重新对齐整个文件。

dd 这样的东西可以相当有效地做到这一点。

这些链接可能是相关的:

https://unix.stackexchange.com/questions/13907/delete-the-first-n-bytes-of-files Remove number of bytes from beginning of file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多