如何在Qt中创建一个具有完整路径的新文件?

时间:2010-06-11 16:12:12

标签: qt file qfile

我是Qt初学者,只是遇到了问题。我正在寻找一个文件SomePath/NewDirectoryA/NewFile.kmlNewFile.kml将是NewDirectoryA中唯一的文件,该目录只是为了维护项目中的语义。)

如果SomePath/NewDirectoryA/NewFile.kml存在,那么我将在我的代码中使用它,如果它不存在,那么我必须创建它。如果此文件不存在,则此目录在SomePath中也不存在。因此,如果我只需创建一个文件,我可以使用QFile并在ReadWrite或WriteOnly模式下打开它。

但问题是我必须用目录本身创建文件 我尝试使用文件名为QFile的{​​{1}},但它没有用。

请建议我在给定位置(SomePath)的新目录(NewDirectorA)中创建新文件(NewFile.kml)的方法。

2 个答案:

答案 0 :(得分:34)

  

bool QFile::open(OpenMode模式)[虚拟]

     

[...]

     

注意:在WriteOnly或ReadWrite模式下,   如果相关文件尚未存在   存在,这个功能会尝试   在打开之前创建一个新文件。

Qt对文件创建的警告

  

Platform Specific Issues

     

在类Unix系统上处理文件权限的方式不同   视窗。在类Unix系统上的不可写目录中,文件   无法创建。在Windows上并非总是这样,其中,for   例如,“我的文档”目录通常不可写,但它   仍然可以在其中创建文件。

使用

创建目录
  

<强> BOOL   QDir::mkdir   (const QString&amp; dirName)const

     

创建一个名为的子目录   DIRNAME。

  

bool QDir::mkpath   (const QString&amp; dirPath)const

     

创建目录路径dirPath。

     

该功能将创建所有父级   创建的必要目录   。目录

答案 1 :(得分:1)

AFAIK无法直接使用QFile创建文件和目录。您必须先创建目录(QDir::mkpath将创建完整路径),然后创建文件(QFile::open)。

QString path("SomePath/NewDirectoryA/");
QDir dir; // Initialize to the desired dir if 'path' is relative
          // By default the program's working directory "." is used.

// We create the directory if needed
if (!dir.exists(path))
    dir.mkpath(path); // You can check the success if needed

QFile file(path + "NewFile.kml");
file.open(QIODevice::WriteOnly); // Or QIODevice::ReadWrite