【发布时间】:2013-04-03 03:19:33
【问题描述】:
当我试图解决this 问题时,我想到了这个问题。
我有容量为 120 GB 的硬盘,其中 100 GB 被单个大文件占用。所以 20 GB 仍然是免费的。
我的问题是,我们如何将这个巨大的文件分割成更小的文件,比如每个 1 GB?我看到如果我有大约 100 GB 的可用空间,可能使用简单的算法是可能的。但是只给 20 GB 的可用空间,我们最多可以写入 20 个 1GB 的文件。我不知道如何在读取大文件时删除它的内容。
有什么解决办法吗?
一旦我写完一个文件,似乎我必须将文件截断 1 GB,但这归结为这个问题:
是否可以截断文件的一部分?具体如何?
我想看看在 C 或 C++(最好是标准 C 和 C++)中工作的算法(或算法大纲),所以我可能知道较低级别的细节。我不是在寻找可以完成这项工作的神奇函数、脚本或命令。
【问题讨论】:
-
您必须从源文件的 END 开始工作。分割一个 1gig 的块,将源文件截断 1gig,等等......你不能从前面做,因为这需要你复制整个文件,你会用完空间。
-
@nawaz:抱歉,但我认为拥有 110k 代表的人可以自己通过谷歌搜索 ftruncate() 信息...
-
只坚持标准功能时必须小心。通常情况下,我不得不求助于非标准扩展来正确处理大于 4GB 的文件。
-
@brianbeuning:可以增加更大文件的大小,然后问同样的问题。所以你的 50 美元无济于事。
-
@Nawaz:如果它正在截断它,那么您打开它时使用了错误的标志。
标签: c++ c algorithm file hard-drive