proyecto - qt interface tutorial
¿Cómo crear un nuevo archivo con ruta completa en Qt? (2)
Soy un principiante de Qt y me quedé estancado con el problema. Estoy buscando un archivo SomePath/NewDirectoryA/NewFile.kml
( NewFile.kml
será el único archivo en NewDirectoryA
, teniendo este directorio solo para mantener la semántica en el proyecto).
Si SomePath/NewDirectoryA/NewFile.kml
, lo SomePath/NewDirectoryA/NewFile.kml
en mi código y, si no existe, tendré que crearlo. Si este archivo no existe, entonces este directorio tampoco existe en SomePath
. Entonces, si solo tengo que crear un archivo, puedo usar QFile y abrirlo en modo ReadWrite o WriteOnly.
Pero el problema es que tengo que crear el archivo con el propio directorio.
QFile
con QFile
con el nombre de archivo SomePath/NewDirectoryA/NewFile.kml
pero no funcionó.
Por favor, sugiérame una forma en la que pueda crear un nuevo archivo (NewFile.kml) en un nuevo directorio (NewDirectorA) en una ubicación determinada (SomePath).
bool QFile::open (modo OpenMode) [virtual]
[...]
Nota: En el modo WriteOnly o ReadWrite, si el archivo relevante aún no existe, esta función intentará crear un nuevo archivo antes de abrirlo.
La advertencia de Qt para la creación de archivos.
Problemas específicos de la plataforma
Los permisos de archivos se manejan de manera diferente en sistemas similares a Unix y Windows. En un directorio no grabable en sistemas similares a Unix, los archivos no se pueden crear. Este no es siempre el caso en Windows, donde, por ejemplo, el directorio ''Mis documentos'' generalmente no se puede escribir, pero aún es posible crear archivos en él.
Los directorios se crean con
bool QDir::mkdir (const QString & dirName) const
Crea un subdirectorio llamado dirName.
y
bool QDir::mkpath (const QString & dirPath) const
Crea la ruta del directorio dirPath.
La función creará todos los directorios principales necesarios para crear el directorio.
AFAIK no es posible crear el archivo y el directorio directamente con QFile
. Primero debe crear el directorio ( QDir::mkpath
creará la ruta completa) y luego el archivo ( 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