有没有简单的方法来修剪文件?

发布于 2024-12-07 14:27:18 字数 226 浏览 0 评论 0原文

我有一个大文件(通常超过 1GB),格式如下:

[标题信息,128字节][内容,1GB]

我的问题:是否有一种简单的方法可以修剪标题信息,而不必读取内容部分并保存到磁盘再次?我的意思是我只需要修改现有文件并删除标题部分。

更新:

标题位于文件的开头

I have a large file (typically more than 1GB) with following format:

[header information, 128 bytes] [content, 1GB]

My question: Is there a simple way to trim the header information without have to read the content part and save to disk again? I mean I just need to modifying the existing file and delete the header part.

Update:

The header is at the beginning of the file

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

捂风挽笑 2024-12-14 14:27:18

如果标头位于文件的开头,那么在不完全重写整个文件的情况下根本不可能删除该标头。这就是文件系统的本质。

解决这个难题的明显方法是将标头放在文件末尾。删除文件末尾是一个简单的操作。另一种选择是将标头放入单独的文件甚至备用文件流中。

If the header is at the beginning of the file then it is simply impossible to remove that header without completely re-writing the entire file. That's simply the nature of file systems.

The obvious solution to the conundrum is to put the header right at the end of the file. It's a trivial operation to strip off the end of a file. Another option would be to put the header in a separate file or even an alternate file stream.

赢得她心 2024-12-14 14:27:18

从文件系统的角度来看,文件内容只是一系列块。虽然文件系统通常允许最后一个块中有一些“松弛”(即未使用的空间)(以容纳不是块大小倍数的文件大小),但文件系统根本不允许任何松弛。 > 在第一个块中。换句话说,文件内容必须从第一个块的开头开始。

因此,您不能从文件开头删除任意数量的数据。即使将数据量修剪为等于块大小也不会通过我所知道的任何 API 公开。

From the perspective of the file system, a file content is just a sequence of blocks. While file system normally allows some "slack" (i.e. unused space) in the last block (to accommodate a file size that is not multiple of block size), the file system is simply not constructed to allow any slack in the first block. In other words, the file content must begin at the beginning of the first block.

So you cannot trim arbitrary amount of data from the start of the file. Even trimming the amount of data equal to the block size is not exposed through any API I know of.

伤感在游骋 2024-12-14 14:27:18

简短回答:不,没有。内容的每一点都必须被移动。

Short answer: No, there isn't. Every bit of the contents has to get moved.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文