我是Qt初学者,只是遇到了问题。我正在寻找一个文件SomePath/NewDirectoryA/NewFile.kml
(NewFile.kml
将是NewDirectoryA
中唯一的文件,该目录只是为了维护项目中的语义。)
如果SomePath/NewDirectoryA/NewFile.kml
存在,那么我将在我的代码中使用它,如果它不存在,那么我必须创建它。如果此文件不存在,则此目录在SomePath
中也不存在。因此,如果我只需创建一个文件,我可以使用QFile并在ReadWrite或WriteOnly模式下打开它。
但问题是我必须用目录本身创建文件
我尝试使用文件名为QFile
的{{1}},但它没有用。
请建议我在给定位置(SomePath)的新目录(NewDirectorA)中创建新文件(NewFile.kml)的方法。
答案 0 :(得分:34)
bool QFile::open(OpenMode模式)[虚拟]
[...]
注意:在WriteOnly或ReadWrite模式下, 如果相关文件尚未存在 存在,这个功能会尝试 在打开之前创建一个新文件。
Qt对文件创建的警告
在类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