Como criar um novo arquivo com caminho completo no QT?
Pergunta
Eu sou um iniciante no QT e fiquei preso ao problema. Estou procurando um arquivo SomePath/NewDirectoryA/NewFile.kml
(NewFile.kml
será o único arquivo em NewDirectoryA
, ter esse diretório apenas para manter a semântica no projeto).
Se SomePath/NewDirectoryA/NewFile.kml
Existe então eu vou usá -lo no meu código e, se não existir, tenho que criá -lo. Se este arquivo não existir, este diretório também não existe em SomePath
. Portanto, se eu tiver que criar um arquivo, posso usar o QFile e abrir no modo ReadWrite ou WriteNly.
Mas o problema é que eu tenho que criar o arquivo com o próprio diretório.
Eu tentei com QFile
com o nome do arquivo SomePath/NewDirectoryA/NewFile.kml
Mas não funcionou.
Por favor, sugira -me uma maneira pela qual eu possa criar um novo arquivo (newfile.kml) em um novo diretório (newDirectera) em um determinado local (algum caminho).
Solução
bool Qfile :: aberto (Modo OpenMode) [Virtual
[...]
NOTA: No modo WriteOnly ou ReadWrite, se o arquivo relevante ainda não existir, essa função tentará criar um novo arquivo antes de abri -lo.
Advertência do QT para criação de arquivos
Questões específicas da plataforma
As permissões de arquivo são tratadas de maneira diferente em sistemas e Windows do tipo UNIX. Em um diretório não gravável em sistemas semelhantes a Unix, os arquivos não podem ser criados. Esse nem sempre é o caso no Windows, onde, por exemplo, o diretório 'meus documentos' geralmente não é gravável, mas ainda é possível criar arquivos nele.
Os diretórios são criados com
bool Qdir :: mkdir (Const Qstring & Dirname) const
Cria um subdiretório chamado Dirname.
e
bool Qdir :: mkpath(const qstring & dirpath) const
Cria o caminho do diretório Dirpath.
A função criará todos os diretórios dos pais necessários para criar o diretório.
Outras dicas
Afaik, não é possível criar o arquivo e o diretório diretamente com QFile
. Você precisa primeiro criar o diretório (QDir::mkpath
criará o caminho completo) e depois o arquivo (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