如何在c中只删除文件的指定部分?

时间:2014-05-03 06:27:19

标签: c file

我编写了自己的cp函数,它只将一半分区的mp4文件复制到我自己另外创建的分区。这个额外创建的分区是mp4文件大小的一半,我正在从这个分区播放mp4文件。 播放这半个mp4文件后,我想删除文件这一部分的块,以便我可以将文件的其余部分复制到该分区并播放它。 我正在使用低级别的i / o函数打开,读取,写入,关闭C文件处理来编写cp函数。

2 个答案:

答案 0 :(得分:0)

此功能将取决于您使用的操作系统。我不知道这样做的通用方法。在Windows上,您可以在基于unix的系统_chsize()中使用函数ftruncate()。您可以使用这些函数中的每一个将文件大小设置为0,从而有效地删除已分配的块。

答案 1 :(得分:0)

我会为此目的使用mmap(2)并摆脱暂存分区。在大多数系统上,这种方式更快,因为磁盘I / O的处理方式与交换文件的处理方式非常相似,而且非常高度优化和加速。

开始播放时,将文件的第一部分映射到内存地址并从中开始工作。然后,当前部分的结尾将映射到下一部分。