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

GG.*_*GG. 19 qt file qfile

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

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

但问题是我必须用目录本身创建文件.
我尝试使用QFile文件名,SomePath/NewDirectoryA/NewFile.kml但它没有用.

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

Gyö*_*sek 36

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

[...]

注意:在WriteOnly或ReadWrite模式下,如果相关文件尚不存在,则此函数将在打开之前尝试创建新文件.

Qt对文件创建的警告

平台特定问题

在类Unix系统和Windows上,文件权限的处理方式不同.在类Unix系统上的不可写目录中,无法创建文件.在Windows上并非总是如此,例如,"我的文档"目录通常不可写,但仍然可以在其中创建文件.

目录是用.创建的

bool QDir :: mkdir (const QString&dirName)const

创建一个名为dirName的子目录.

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

创建目录路径dirPath.

该函数将创建创建目录所需的所有父目录.

  • 我不能创建一个包含所有必要父目录的文件? (2认同)

ymo*_*eau 6

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
Run Code Online (Sandbox Code Playgroud)