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).

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top