打开QT文件不会创建文件
QT file open does not create a file
我正在尝试使用QT打开一个文件并写入:
void fileClass::saver(QList<ToDo *> t, QList<appointment *> a, QString fileName)
{
fileName.append(".mca");
file = new QFile(fileName);
if( !file->open(stdin,QIODevice::WriteOnly))
qDebug() << "Could not create file " << fileName << endl;
for (int i = 0; i < t.count(); i++)
{
file->write(t[i]->ShowDate().toString().toAscii().constData(), qstrlen(t[i]->ShowDate().toString().toAscii().constData()));
file->write(t[i]->ShowDescription().toAscii().constData(), qstrlen(t[i]->ShowDescription().toAscii().constData()));
file->write(t[i]->ShowStart().toString().toAscii().constData(), qstrlen(t[i]->ShowStart().toString().toAscii().constData()));
file->write(t[i]->ShowTitle().toAscii().constData(), qstrlen(t[i]->ShowTitle().toAscii().constData()));
file->write(t[i]->ShowWarning().toString().toAscii().constData(), qstrlen(t[i]->ShowWarning().toString().toAscii().constData()));
file->write(t[i]->ShowWarningTime().toString().toAscii().constData(), qstrlen(t[i]->ShowWarningTime().toString().toAscii().constData()));
switch (t[i]->ShowPriority())
{
case (VERY_HIGH):
file->write("0 ");
break;
case (HIGH):
file->write("1 ");
break;
case (NORMAL):
file->write("2 ");
break;
case (LOW):
file->write("3 ");
break;
case (VERY_LOW):
file->write("4 ");
break;
}
switch (t[i]->ShowState())
{
case (STILL_BEGIN):
file->write("0 ");
break;
case (BEGUN):
file->write("1 ");
break;
case (ALMOST_DONE):
file->write("2 ");
break;
case (DONE):
file->write("3 ");
break;
}
}
file->write("----------------------------------------------------------");
for(int i =0; i<a.count(); i++)
{
file->write(a[i]->ShowDate().toString().toAscii().constData(), qstrlen(a[i]->ShowDate().toString().toAscii().constData()));
file->write(a[i]->ShowDescription().toAscii().constData(), qstrlen(a[i]->ShowDescription().toAscii().constData()));
file->write(a[i]->ShowEnd().toString().toAscii().constData(), qstrlen(a[i]->ShowEnd().toString().toAscii().constData()));
file->write(a[i]->ShowReminder().toString().toAscii().constData(), qstrlen(a[i]->ShowReminder().toString().toAscii().constData()));
file->write(a[i]->ShowStart().toString().toAscii().constData(), qstrlen(a[i]->ShowStart().toString().toAscii().constData()));
file->write(a[i]->ShowTitle().toAscii().constData(), qstrlen(a[i]->ShowTitle().toAscii().constData()));
}
file->close();
}
但是文件却没有以某种方式创建?知道为什么吗?我自己做了扩展。mca…
文件名传递正确,没有任何问题。。。并且调试没有显示,所以理论上它应该可以工作,但在我的文件夹中找不到文件。。。提前感谢
似乎需要使用另一个QFile::open
方法。使用的方法打开现有的文件句柄,因此打开stdin
。之前设置的文件名并不重要。
试试这个:
if( !file->open(QIODevice::WriteOnly))
qDebug() << "Could not create file " << fileName << endl;
这个对stdin的引用看起来是假的:
if( !file->open(stdin,QIODevice::WriteOnly))
stdin
是用来读的,不是用来写的。
最好使用此表单:
bool QFile::open ( OpenMode mode )
其中mode
将是QIODevice::WriteOnly
相关文章:
- 终端不会为C++文件创建.exe文件吗
- 如何从具有两列的.txt文件创建并行数组?
- 从 .lib 文件创建一个.dll文件
- 如何从输入文件 c++ 创建随机名称生成器
- 无法从 cso 文件创建顶点着色器(从 fx 文件创建)
- 如何为多个目录中的多个文件创建生成文件?
- 在编译时从 c++ 文件创建枚举
- 如何在运行时从 c++ 中的 DLL 文件创建对象?
- 文件创建并不总是成功
- 如何使用 QFile、c++ 从文件创建整数数组
- 您可以使用 makefile 从 .o 对象文件创建 C++ 文件吗?
- 从函数中的dat文件创建一个2维数组
- 如何为 cpp 和 h 文件创建别名(并忽略编译器__attributes__)
- 如何从现有的生成文件创建 CMake 文件?
- 为什么我无法使用文本文件创建文件映射?
- 通过读取文件创建映射<字符串,矢量>时如何管理内存<string>
- 从文本文件创建 2D 字符串矢量
- ofStream: - 尽管文件创建了,但文本文件上没有输出
- 从语言文件创建JSON对象
- 将文本文件创建到节点.js的插件C++