我有以下情况。我有一个大文件说1 KB。我想读取前100个字节,然后从文件中删除100字节读取数据,然后读取下一个100字节。读取100个字节是可以的,但如何从文件中删除100个字节?
答案 0 :(得分:4)
这通常是一个多步骤的过程:
这样,如果出现问题,您只需恢复重命名的原始文件即可。将文件从一个地方移动到另一个地方也是以这种方式实现的。
但是,如果您不想这样做,SetEndOfFile
function是另一个可行的选项,可以就地截断文件的内容。来自文档:
将指定文件的物理文件大小设置为文件指针的当前位置。
物理文件大小也称为文件末尾。
SetEndOfFile
函数可用于截断或扩展文件。
答案 1 :(得分:3)
那不会被称为截断;该术语是指从结束而不是从头开始删除数据。除了将文件的内容从第100个字节开始复制到新文件之外,我不知道任何可能的操作系统。
答案 2 :(得分:1)
删除已在文件中处理的数据非常耗时,并且在大多数情况下不是必需的。
删除文件顶部或中间附近的数据需要编写一个新文件,这需要时间和磁盘空间。大多数应用程序将读取并处理整个文件,然后重命名该文件(具有备份扩展名)。这对于调试目的很有用。删除整个文件通常是一种更快的操作,即在没有处理数据的情况下编写新文件。
删除应仅在必要时进行。对于文件,可以存储有效数据开始的偏移量,从而减少从文件中删除数据的需要。出于安全目的,覆盖文件中的数据通常比创建没有处理数据的新文件更快。
首先尝试编写程序,不要删除文件中的数据。只有在程序健壮且工作正常后才能根据需要删除。许多人建议只在驱动器上没有更多空间时删除文件。