我正在使用C将一些数据写入文件.我想删除文件中写入的先前文本,以防它比我现在写的更长.我想减小文件的大小或截断直到结束.我怎样才能做到这一点?
是否可以使用fstream(或类似的东西)从C++中的二进制文件末尾删除N个字节?我不想读取整个文件,剪切并再次写入,但由于它是从文件的末尾看起来它不应该是这样的问题.
谢谢你的建议.
所以,我环顾四周,但找不到从文件末尾删除字节而不重写整个文件的方法.我发现一个truncate函数适用于linux,但没有为windows找到任何东西.现在,显然,要扩展文件,我可以用空字节填充结尾,但是为了减少文件的大小,是否真的需要在Windows上重写整个文件?或者是否有一个函数,可能在windows.h,允许我,像truncate在Linux上,重新分配文件的大小?
编辑: 我刚刚找到该功能_chdir(int,long),我正在阅读如何使用它.
编辑: 而且,为什么确实fstream遗漏了这个重要的功能?
编辑: 好的,所以它似乎_chdir()不起作用(我忘了提这个,顺便说一句),因为该函数必须支持大于4 GB的文件 - 即,我使用的是64位文件指针.我认为这将是固有的,但在阅读了论据后chsize,长度不是size_t.