Arquivos e pastas

Embora grande parte do comportamento de aplicativos e operações possa ser executado dentro do próprio aplicativo, incluindo alguns recursos de armazenamento limitados, a maioria dos aplicativos exige algum grau de acesso aos arquivos no dispositivo. A criação e gravação em arquivos, selecionar fotos já salvas e baixar arquivos de uma fonte online, exigem algum grau de gerenciamento de arquivos ou pastas. O AppStudio Framework tem vários componentes destinados a criar, organizar e navegar em pastas e arquivos.

Gerenciamento de pasta

O componente FileFolder do AppFramework fornece ferramentas para manipular, navegar, criar e excluir caminhos de pastas e arquivos. Se o seu aplicativo estiver criando ou baixando novos arquivos de qualquer tipo, a utilização do FileFolder pode ser importante para manter a estrutura de arquivos interna do seu aplicativo ordenada e consistente.

Esta amostra de código cria uma nova pasta em um local definido, o que é ideal se o seu aplicativo criar uma grande quantidade de arquivos que precisam ser agrupados.

let fileFolder = AppFramework.fileFolder("~/ArcGIS/Example App"); //Directs FileFolder towards a location within named user directory
let newFileFolder = fileFolder.folder("Bruce"); //Creates a folder object by the name Bruce
let result = newFileFolder.makeFolder(); //Creates folder at the location described by fileFolder.path

Caminho do arquivo padrão

Os sistemas operacionais têm locais padrão para salvar determinados tipos de arquivos. O componente StandardPaths fornece um meio para utilizar estes locais como um caminho de pasta padrão.

Esta amostra de código abre um diálogo de arquivo especificamente no local padrão para imagens, utilizando o enum standardLocations do componente StandardPaths para informar a função resolvedPathUrl do AppFramework.

FileDialog {
    title: qsTr("Open Photo")
    folder: Qt.platform.os == "ios"
            ? "file:assets-library://"
            : AppFramework.standardPaths.defaultFolder(StandardPaths.PicturesLocation).url

    onAccepted: {
            imageObject.load(fileUrl);
    }
}

StandardPaths também tem métodos para determinar se uma pasta ou local pode ser gravado, o que é útil para configurar um aplicativo para gravar em um local apropriado.

Criar e gravar em um arquivo

Além de criar e navegar em pastas, o componente FileFolder também pode ser utilizado para criar texto simples e arquivos JSON. Adicionar a seguinte linha aos eventos onClicked na amostra de criação da pasta acima criará um arquivo de texto dentro da pasta:

fileFolder.writeTextFile("TestFile.txt", "Contents of the file")

Porém, o FileFolder pode criar somente o arquivo inicialmente e não pode ler ou escrever após a criação. Para fazer isto, o componente File deve ser utilizado; um componente especificamente utilizado para trabalhar com arquivos de texto desta maneira.

Esta amostra de código apresenta um campo de texto que pode ser utilizado para escrever no arquivo de texto criado anteriormente. O componente FileInfo, utilizado para retornar informações sobre um arquivo, é utilizado neste caso para localizar de forma confiável o arquivo de texto.

FileInfo {
    id: fileInfo
    filePath: "~/ArcGIS/Apps/SampleApp/TestFile.txt" //Instantiates FileInfo to locate the file
}

function saveText(text) {
    let fileFolder = fileInfo.folder;
    fileFolder.makeFolder();
    let file = AppFramework.file(fileInfo.filePath);
    file.open(File.OpenModeReadWrite)
    file.write(text);
    file.close();
}

Tenha em mente que o componente File é um editor de textos plano. Isto significa que o texto formatado, como também, o conteúdo diferente de texto, não serão lidos ou exibidos corretamente. No entanto, eles ainda podem ser gravados no arquivo.