当使用QFile打开指定文件的时候:
1、文件名中不包含路径("test.txt"),若文件存在则打开成功,若文件不存在则创建该文件,open返回值均为true。
2、文件命中包含路径:
a、若该路径已经存在,则open函数打开或创建指定文件。
b、若路径不存在,则open函数打开失败,且不再创建该文件。
在打开文件前,可以使用QFile::exists检查文件是否存在。
当使用QDir时,有mkdir和mkpath可以创建指定的路径。
使用mkdir时:若指定创建的路径其上一层目录存在,则创建成功,否则创建失败。
使用mkpath时:创建指定的路径。
接下来,使用QDir和QFile实现检查文件是否存在,若不存在则自动创建该文件:
bool confirmFile(const QString sFile) const
{
QString sAppPath = QCoreApplication::applicationDirPath();
QString sFilePath = sAppPath+sFile;
QString sPath = sFilePath.left(sFilePath.lastIndexOf('/'));
//文件是否存在
if(QFile::exists(sFilePath))
return true;//文件存在,则确认可以操作
//文件不存在,先看路径是否存在
QDir dir(sPath);
if(!dir.exists(sPath))
{
//路径不存在,则创建路径
if(!dir.mkdir(sPath))
return false;//路径创建失败就没办法了,通常不会失败
}
//到这里需确认路径已经ok,且文件不存在,创建文件
QFile file(sFilePath);
//当以Write方式打开时,若文件不存在则自动创建
if(!file.open(QIODevice::WriteOnly))
return false;
file.close();
return true;
}