Archivos y carpetas

Aunque gran parte del comportamiento y operaciones de su aplicación se pueden realizar dentro de la propia aplicación, incluidas algunas capacidades de almacenamiento limitado, la mayoría de las aplicaciones requieren cierto grado de acceso a los archivos del dispositivo. Crear y escribir en archivos, seleccionar fotos ya guardadas y descargar archivos de una fuente en línea requiere cierto grado de administración de archivos o carpetas. El marco de AppStudio tiene varios componentes destinados a crear, organizar y navegar por archivos y carpetas.

Administración de carpetas

El componente AppFramework de FileFolder proporciona herramientas para manipular, navegar, crear y eliminar carpetas y rutas de archivos. Si su aplicación está creando o descargando archivos nuevos de cualquier tipo, utilizar FileFolder puede ser importante para mantener la estructura interna de los archivos de su aplicación de forma ordenada y coherente.

Esta muestra de código crea una nueva carpeta en una ubicación establecida, lo que es ideal si su aplicación va a crear un gran número de archivos que necesitan ser agrupados juntos.

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

Rutas de archivos estándar

Los sistemas operativos tienen ubicaciones estándar específicas para guardar ciertos tipos de archivos. El componente StandardPaths proporciona un medio para utilizar estas ubicaciones como una ruta de carpeta predeterminada.

Esta muestra de código abre un cuadro de diálogo de archivo específicamente para la ubicación predeterminada para imágenes, utilizando la enum standardLocations del componente StandardPaths para informar sobre la función resolvedPathUrl de 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 posee también métodos para determinar si se puede escribir en una carpeta o ubicación, lo que resulta útil para configurar que una aplicación escriba en una ubicación apropiada.

Crear y escribir en un archivo

Además de crear y navegar por carpetas, el componente FileFolder también se puede utilizar para crear archivos de texto simple y JSON. Al agregar la siguiente línea a los eventos onClicked en la muestra de creación de carpeta de arriba, se creará un archivo de texto dentro de la carpeta:

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

Sin embargo, FileFolder solo puede crear el archivo al principio y no puede ni leer ni escribir en él después de la creación. Para hacerlo, se debe utilizar el componente File, un componente específicamente utilizado para trabajar con archivos de texto de esta forma.

Esta muestra de código presenta un campo de texto que se puede utilizar para escribir en el archivo de texto creado anteriormente. El componente FileInfo, utilizado para devolver información acerca de un archivo, se utiliza en este caso para ubicar de forma fiable el archivo 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();
}

Tenga en cuenta que el componente File es un editor de texto plano. Esto significa que un texto con formato, así como el contenido sin texto, no se leerá ni se visualizará correctamente. Sin embargo, aún se puede escribir en el archivo.