【发布时间】:2021-09-29 15:06:23
【问题描述】:
好的,所以这听起来可能非常微不足道,但我完全被难住了。我的最终目标是写入 .xlsx 文件或 .csv 文件,但对于初学者,我想我会尝试使用 QFile 在 qt 中打开或创建一个简单的 .txt 文件,如下所示:
int main(int argc, char *argv[]){
QApplication a(argc, argv);
MainWindow w;
QString filename = "test.txt";
QFile file(filename);
if(file.open(QFile::ReadWrite | QFile::Text)){
QTextStream stream(&file);
stream << "something" << endl;
}else{
qDebug() << "file open error";
}
w.show();
return a.exec();
}
通过这次尝试,我尝试了两种可能性,起初我没有创建 .txt 文件,而是让程序创建一个,它没有引发错误,也没有进入 else 案例。其次,我还尝试打开同一个文件,因为现在它应该已创建,并且再次,没有错误也没有问题。现在我想检查我的代码是否有效,我查找了我的 .txt 文件,但我找不到它。从网上搜集的资料来看,应该是在根目录下,但不是。
之后我决定将路径指定为我的应用程序的路径,如下所示:
int main(int argc, char *argv[]){
QApplication a(argc, argv);
MainWindow w;
QString filename = QApplication::applicationDirPath() + "test.txt";
QFile file(filename);
if(file.open(QFile::ReadWrite | QFile::Text)){
QTextStream stream(&file);
stream << "something" << endl;
}else{
qDebug() << "file open error";
}
w.show();
return a.exec();
}
同样的结果,没有错误,在任何地方都找不到文件。我也尝试过QApplication::applicationFilePath(),但这让我想到了else 案例。
所以我要问的是我的文件保存在哪里,或者我如何以一种有效的方式定义文件路径。我正在使用 Qt 5.12.7 和 openSUSE Leap 15.2,非常感谢任何解决方案。
更新: 我玩了一下,没有成功找到文件本身,但我现在确定它们在程序退出后存在并且它们已正确保存,因为我可以正确读取它们,也可以从其他项目访问它们,然后是我创建的项目他们在里面,所以他们肯定不会保存在项目目录中。
【问题讨论】:
-
文件应该在 build 文件夹中,至少我使用 Windows 10 是这样
-
感谢您的回答,但我的构建文件夹仅包含 moc 和 .o 文件。你说的是那个文件夹吗?
-
filename是什么?如果它是绝对路径,则将使用该绝对路径创建文件。如果它是相对路径,那么文件将在相对于可执行文件的当前工作目录的路径中创建。行为与例如std::ofstream相同——它不特定于QFile。 -
我希望它是一个相对路径,我以为我第一次尝试就做到了。我只希望文件位于我的项目目录中。