首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从大文件中的位置删除N个字节长度

从大文件中的位置删除N个字节长度
EN

Stack Overflow用户
提问于 2017-02-08 11:29:32
回答 1查看 244关注 0票数 0

我读取了几个文件并将它们合并到一个文件中,现在我想从其中删除一个特定的文件。

假设有10个大小为1GB的文件,我将它们合并成一个文件,使其大小为10 1GB,现在我想从其中删除第7个编号文件,可以吗?我怎样才能做到这一点?

  • 我知道要删除的文件的长度/大小。
  • 我知道要删除的文件在那个大文件中的开始和结束位置。

我想这是有可能的。

  • 读取和写入前6个和最后3个文件,跳过第7个文件并将其写入另一个文件。
  • 或者,从要删除的文件的末尾位置读取,并将其写入要删除的文件的起始位置,直到同一文件中的EOF,然后剪掉最后不需要的N个字节。

但是,如果有另一种解决方案,我想避免它,因为读取和写入整个文件需要很长时间,并且占用大量磁盘空间(在第一个选项中),用户可能无法使用这些磁盘空间,因此我正在寻找是否有其他解决方案。

如果你们推荐我,我也可以使用任何库或其他方法/解决方案,谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-08 14:09:47

  1. 您可以使用批处理复制命令复制文件,这似乎是最简单的copy file1.txt + file2.txt + ... + file10.txt newfile.txt,我们跳过了第7个文件,即file7.txt。这和你的第一个方法是一样的。它应该是复制命令直接与内核和内存设备交互的有效方法。Use也可以参考Robocopy。您可以从.Net传递构造命令并使用shell执行。
  2. W.r.t.您的第二种方法,如您所建议的,最好从文件的末尾开始。您可以使用BinaryWriter复制和覆盖使用Seek方法。SeekOrigin.Current将帮助您覆盖这些块。
  3. 低层次编程,即您可以直接玩集群的文件和移动部分的文件。为此,您可能需要处理小文件,然后在最终合并的大文件上使用它。请参考链接。它在C#里。这似乎也是最有效率和最有趣的。当然,我还没做呢。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42111897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档