Je suis un débutant Qt et je suis juste resté coincé avec le problème. Je recherche un fichier SomePath/NewDirectoryA/NewFile.kml
(NewFile.kml
sera le seul fichier dans NewDirectoryA
, ayant ce répertoire juste pour maintenir la sémantique dans le projet).
Si SomePath/NewDirectoryA/NewFile.kml
existe alors je vais l'utiliser dans mon code et s'il n'existe pas alors je dois le créer. Si ce fichier n'existe pas, ce répertoire n'existe pas non plus dans SomePath
. Donc, si seulement je dois créer un fichier, je peux utiliser QFile et l'ouvrir en mode ReadWrite ou WriteOnly.
Mais le problème est que je dois créer le fichier avec le répertoire lui-même.
J'ai essayé avec QFile
avec le nom de fichier SomePath/NewDirectoryA/NewFile.kml
mais ça n'a pas marché.
Veuillez me suggérer un moyen par lequel je peux créer un nouveau fichier (NewFile.kml) dans un nouveau répertoire (NewDirectorA) à un emplacement donné (SomePath).
bool QFile :: open (mode OpenMode) [virtuel]
[...]
Remarque: En mode WriteOnly ou ReadWrite, si le fichier correspondant n'existe pas déjà, cette fonction essaiera de créer un nouveau fichier avant de l'ouvrir.
Avertissement de Qt pour la création de fichiers
Problèmes spécifiques à la plate-forme
Les autorisations de fichiers sont gérées différemment sur les systèmes de type Unix et Windows. Dans un répertoire non accessible en écriture sur les systèmes de type Unix, les fichiers ne peuvent pas être créés. Ce n'est pas toujours le cas sous Windows, où, par exemple, le répertoire "Mes documents" n'est généralement pas accessible en écriture, mais il est toujours possible d'y créer des fichiers.
Les répertoires sont créés avec
bool QDir :: mkdir (const QString & dirName) const
Crée un sous-répertoire appelé dirName.
et
bool QDir :: mkpath (const QString & dirPath) const
Crée le chemin de répertoire dirPath.
La fonction créera tous les répertoires parents nécessaires pour créer le répertoire.
AFAIK il n'est pas possible de créer le fichier et le répertoire directement avec QFile
. Vous devez d'abord créer le répertoire ( QDir::mkpath
créera le chemin complet) puis le fichier ( 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