如何在Visual C ++中截断文件?

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

要回复问题请先登录注册