如何重用 QFile
How to reuse QFile?
我想使用以下代码将两个文件保存到目录:
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),QDesktopServices::storageLocation(QDesktopServices::DesktopLocation),
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);
QFile file(dir.append("/GlobalMessage.txt"));
if(file.open(QIODevice::WriteOnly | QIODevice::Text)){
QTextStream out(&file);
for (int i=0;i<t_global.size();i++){
out << t_global[i]<<" "<<y_lat.y[i]<<" "<<y_lng.y[i]<<" "<<y_alt.y[i]<<" "<<y_vx.y[i]<<" "<<y_vy.y[i]<<" "<<y_vz.y[i]<<"n";
}
}
// optional, as QFile destructor will already do it:
file.close();
file.setFileName(dir.append("/AttitudeMessage.txt"));
if(file.open(QIODevice::WriteOnly | QIODevice::Text)){
QTextStream out(&file);
for (int i=0;i<t_attitude.size();i++){
out << t_attitude[i]<<" "<<y_roll.y[i]<<" "<<y_pitch.y[i]<<" "<<y_yaw.y[i]<<"n";
}
}
file.close();
但是,seconde file.open() 总是失败。重用此文件对象的正确方法是什么?
append
更改底层QString
。
这是程序中file.filename()
的输出:
"/tmp/GlobalMessage.txt"
"/tmp/GlobalMessage.txt/AttitudeMessage.txt"
只需使用
QFile file(dir + "/GlobalMessage.txt");
和
file.setFileName(dir + "/AttitudeMessage.txt");
这可能是您生成的路径有问题,因为这段代码实际上对我有用:
QFile file("d:\a.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << file.readAll();
file.close();
file.setFileName("d:\b.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << file.readAll();
}
}
编辑:是的,西蒙首先发现了它,你附加了太多。
相关文章:
- 函数何时会在c++中包含stack_Unwind_Resume调用
- Python中的for循环与C++有何不同
- 如何将C++闭包与变量参数同时重用——类似于JavaScript
- 如何从QFile阅读?它显示该文件不可访问
- QDial:如何将 int 值传递给需要常量字符*的 Qfile?
- 在C++中释放内存期间,迭代器与指针有何不同
- 重用对象与创建新对象
- QDataStream 读取和写入的字节数比 QFile::length() 报告要多
- Qt 写入 xml: QIODevice::write (QFile, "D:/logs.xml" ): 设备未打开
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 如何重用 http::beast::flat_buffer 和 http::response?
- 数组对象的生存期是否在重用其元素存储时结束?
- 类中的 C++ int 被设置为值,似乎不知从何而来
- -fvisibility-inline-hidden 与 gcc 中的 -fvisibility=hidden 有何不同
- 提升 Websocket 并io_context可重用性,以实现连接的可重新建立性
- 重用字符串流而不重新分配
- 通过放置 new 重用数据成员存储
- 在 While 循环中重用对象的多线程
- std::vector::assign/std::vector::operator=(const&) 是否保证在"this"中重用缓冲区?
- 如何重用 QFile