【发布时间】:2011-05-30 01:19:04
【问题描述】:
我想使用fstream 或者最好使用QFile 来删除文件在特定位置(不是文件的开头或结尾)之后的内容。所以我首先使用QFile::seek(long) 或constant time 中的等价物跳到那个位置,然后我想删除剩余的内容,也是在恒定时间内。你推荐什么方法?
【问题讨论】:
标签: c++ qt file-io truncate fstream
我想使用fstream 或者最好使用QFile 来删除文件在特定位置(不是文件的开头或结尾)之后的内容。所以我首先使用QFile::seek(long) 或constant time 中的等价物跳到那个位置,然后我想删除剩余的内容,也是在恒定时间内。你推荐什么方法?
【问题讨论】:
标签: c++ qt file-io truncate fstream
您可以使用QFile::resize 将文件大小调整为您想要的大小。我敢打赌它在幕后使用truncate(请参阅 Andrew 的帖子)。
【讨论】:
查找...
#include <unistd.h>
int ftruncate(int fildes, off_t length);
int truncate(const char *path, off_t length);
从这个site 中快速截取...
如果之前的文件大于长度,多余的数据将被丢弃。
您可能还会发现this answer 很有趣。
【讨论】:
QFile 的解决方案。谢天谢地,有一个。
QFile::resize 答案确实解决了我正在寻找的问题。谢谢! +1
将seek() 之后的新位置视为文件的结尾。当你完成文件的工作后,写下从开始到那时的所有内容。
【讨论】: