如何重用 QFile?
Posted
技术标签:
【中文标题】如何重用 QFile?【英文标题】:How to reuse QFile? 【发布时间】:2014-11-14 20:36:23 【问题描述】:我想使用以下代码将两个文件保存到一个目录:
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();
但是第二个 file.open() 总是失败。重用这个文件对象的正确方法是什么?
【问题讨论】:
我很好奇您希望从中获得什么? 打开一个目录并保存两个文件。 我的意思是重复使用相同的QFile
实例。
没什么特别的。我只是认为这可以工作,但事实并非如此。所以我想知道我哪里出错了。
你没有费心去检查路径吗 :)
【参考方案1】:
append
更改底层QString
。
这是您程序中file.filename()
的输出:
"/tmp/GlobalMessage.txt"
"/tmp/GlobalMessage.txt/AttitudeMessage.txt"
随便用
QFile file(dir + "/GlobalMessage.txt");
和
file.setFileName(dir + "/AttitudeMessage.txt");
【讨论】:
【参考方案2】:这可能是您生成的路径有问题,因为这段代码实际上对我有用:
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();
编辑:是的,西蒙首先发现了它,你添加的太多了。
【讨论】:
以上是关于如何重用 QFile?的主要内容,如果未能解决你的问题,请参考以下文章
如何使 UIPageViewController 像 tableview 重用单元一样重用控制器?