Fichiers et dossiers

Bien que le comportement et les opérations de votre application puissent s'effectuer au sein de l'application elle-même, y compris certaines capacités de stockage limitées, la plupart des applications nécessitent un certain degré d'accès aux fichiers sur le périphérique. Créer des fichiers et y écrire des données, sélectionner des photos déjà enregistrées et télécharger des fichiers à partir d'une source en ligne implique un certain degré de gestion de fichier ou de dossier. AppStudio Framework comporte plusieurs composants permettant de créer, d’organiser et de parcourir des dossiers et des fichiers.

Gestion des dossiers

Le composant AppFramework FileFolder fournit des outils permettant de manipuler, de parcourir, de créer et de supprimer des dossiers et des chemins d’accès à des fichiers. Si votre application crée ou télécharge de nouveaux fichiers de tout type, utiliser FileFolder peut être important pour maintenir la structure de fichiers interne de votre application organisée et cohérente.

Cet exemple de code crée un nouveau dossier à un emplacement défini, ce qui est idéal si votre application doit créer un nombre élevé de fichiers à regrouper.

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

Chemins d'accès aux fichiers standard

Les systèmes d'exploitation disposent d'emplacements standard spécifiques pour enregistrer certains types de fichier. Le composant StandardPaths permet d’utiliser ces emplacements comme chemin d’accès au dossier par défaut.

Cet exemple de code ouvre une boîte de dialogue de fichier spécifiquement à l’emplacement par défaut des images, en utilisant l’énumération standardLocations du composant StandardPaths pour informer la fonction AppFramework resolvedPathUrl.

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

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

StandardPaths dispose également de méthodes pour déterminer s’il est possible d’écrire dans un dossier ou un emplacement, ce qui est utile pour configurer une application de sorte qu’elle écrive à l’emplacement correct.

Création et écriture dans un fichier

En plus de créer et de parcourir des dossiers, le composant FileFolder permet également de créer du texte simple et des fichiers JSON. Ajouter la ligne suivante aux événements onClicked dans l'exemple de création de dossier ci-dessus a pour effet de créer un fichier texte dans le dossier :

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

Toutefois, FileFolder peut uniquement créer le fichier initialement et ne peut ni y lire ni y créer des données après la création. Pour ce faire, le composant File doit être utilisé ; un composant spécifiquement utilisé pour travailler de cette manière avec des fichiers texte.

Cet exemple de code présente un champ de texte permettant d'écrire dans le fichier texte créé précédemment. Le composant FileInfo, utilisé pour retourner des informations sur un fichier, est utilisé dans ce cas pour localiser le fichier texte de manière fiable.

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

Gardez à l'esprit que le composant File est un éditeur de texte brut. Cela signifie que ni le texte formaté, ni le contenu non textuel ne seront lus ou affichés correctement. Ils peuvent toutefois toujours être écrits dans le fichier.