File e cartelle

Nonostante molte delle attività e delle operazioni dell'app possano essere realizzate all'interno dell'app stessa, ivi incluse alcune capacità limitate di archiviazione, la maggioranza delle app richiede un certo grado di accesso a file del dispositivo. La creazione di file e la scrittura sugli stessi, la selezione di foto già salvate e il download di file da una fonte online richiedono tutti, anche solo in parte, la gestione di file o cartelle. Il Framework AppStudio ha più componenti intese per creare, organizzare e navigare cartelle e file.

Gestione delle cartelle

Il componente FileFolder di AppFramework fornisce strumenti per maneggiare, navigare, creare ed eliminare cartelle e percorsi di file. Quando l'app crea o scarica nuovi file di ogni tipo, può essere importante usare FileFolder per tenere la struttura interna del file dell'app ordinata e coerente.

Questo esempio di codice crea una nuova cartella in una destinazione predefinita, una soluzione molto comoda se si prevede che l'app crei una gran quantità di file che dovranno essere raggruppati.

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

Percorsi di file standard

I sistemi operativi dispongono di destinazioni specifiche standard per il salvataggio di certi tipi di file. Il componente StandardPaths fornisce un mezzo per utilizzare tali destinazioni come percorsi predefiniti per le cartelle.

Questo esempio di codice apre una finestra di dialogo del file specifica nella destinazione predefinita per le immagini, usando l'enum StandardPaths del componente standardLocations per informare la funzione resolvedPathUrl di 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 presenta anche metodi per stabilire se è possibile scrivere su una cartella o destinazione; in questo modo, risulta più semplice configurare un'app per la scrittura nella destinazione appropriata.

Creare e scrivere su un file

Oltre a creare cartelle e a navigare tra di esse, il componente FileFolder può anche essere usato per creare file JSON e di testo semplici. Se si aggiunge la seguente riga agli eventi onClicked nell'esempio di creazione della cartella di cui sopra si crea un file di testo all'interno della cartella:

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

Tuttavia, FileFolder può solo creare il file all'inizio e non può leggerlo o scrivervi dopo la creazione. A tale scopo, è necessario usare il componente File, un componente usato apposta per lavorare con i file di testo in questo modo.

Questo esempio di codice presenta un campo di testo utilizzabile per scrivere sul file di testo precedentemente creato. Il componente FileInfo, usato per restituire informazioni su un file, viene utilizzato in questo caso per indirizzare il file di testo alla destinazione adeguata.

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();
}

Tenere in considerazione che il componente File è un editor di testo normale. Ciò significa che il testo formattato, così come il contenuto non testuale, non sarà letto né visualizzato correttamente. Sarà comunque possibile eseguirne la scrittura sul file.