点击按钮时向文本文件追加内容而非覆盖的Qt实现咨询
解决Qt按钮点击写入文件覆盖问题
嘿,这个问题我碰到过好多次啦!核心问题出在你打开文件的模式上——你用的QIODevice::WriteOnly是覆盖写入模式,每次打开都会把文件原有内容清空,所以不管点多少次按钮,新内容都会直接盖掉第一行的旧内容。
怎么改?
把文件打开的模式换成QIODevice::Append | QIODevice::Text就搞定了!Append模式的作用就是让新写入的内容追加到文件末尾,完全不会影响之前已经写进去的内容。
修改后的完整代码
QFile filename(".../Save.txt"); // 关键:用Append模式替代WriteOnly if(filename.open(QIODevice::Append | QIODevice::Text)) { QTextStream stream(&filename); QString str = "Line"; stream << str << endl; filename.close(); // 手动关闭更稳妥,也会在对象销毁时自动关闭 } else { // 别忘了处理文件打开失败的情况,方便排查问题 qDebug() << "文件打开失败:" << filename.errorString(); }
小提示
- 一定要加文件打开成功的判断,不然如果路径错了或者文件被占用,写入操作会悄悄失败,排查起来很麻烦
- 如果不需要立即刷新缓冲区,把
endl换成"\n"会更高效,endl每次都会强制刷新,频繁写入时会影响性能
内容的提问来源于stack exchange,提问作者Faeyan
相关产品推荐
相关产品推荐

