我有一个不寻常的问题。由于我的前任设计,我有一个27 MB的文件,我需要在其中找到一个特定的字节,比如说第100,000个字节。然后我必须删除第100,000和第150,000字节之间的所有内容。
该文件被分解为一个头文件(在大约10,000个字符后以[END]
结尾)和实际数据,这些都是字节形式。 2700万字节在大约15000行上分开。
非常感谢任何帮助。
答案 0 :(得分:0)
在您的情况下(除非您对空间使用有严格的限制),一种解决方案是将您的文件复制到您不需要的另一个跳过字节。取决于您如何计算第n个字节,您可能需要以二进制模式打开文件。您可以将源文件重命名为临时打开具有原始名称的新文件,执行实际复制和删除源。或者您可以将内容复制到临时文件,然后删除原始文件并将temp重命名为原始名称。 如果您对磁盘空间有限制,则可以存储剩余文件(在示例中从150,000到最后)将原始文件截断为100,000,然后将剩余文件复制回来。
答案 1 :(得分:0)
将文件1复制到文件以使用搜索功能跳过不需要的区域。
//open the files:
ifstream fin("filename.ext",ios::in|ios::binary);
ofstream fout("filename.ext",ios::out|ios::binary);
size_t position = ?? ;// position in file
size_t size = ??; //size you want to read
char buffer[BUFFSIZE];
//go to position:
fin.seekg(position);
//read from position
while(size > 0){
fin.read(buffer, MIN(size, BUFFSIZE));
size_t count;
fout.write(buffer, count);
size -= count;
}