Файлы и папки

Хотя большая часть поведения и операций приложения, включая некоторые ограниченные возможности хранения, может быть выполнена внутри собственно приложения, практически любому приложению может потребоваться доступ к файлам на устройстве. Создание файлов и запись в них, выбор сохраненных на устройстве фотографий, а также загрузка файлов из онлайн-источников требуют определенных возможностей управления файлами и папками. AppStudio Framework содержит ряд компонентов, предназначенных для создания, организации и навигации по папкам и файлам.

Управление папками

Компонент AppFramework FileFolder обеспечивает инструменты для управления, навигации, создания и удаления папок и путей к файлам. Если ваше приложение создает или загружает файлы какого-либо типа, использование FileFolder может быть важным для поддержания упорядоченной и согласованной внутренней файловой структуры вашего приложения.

В этом примере кода, в указанном местоположении создается новая папка, в которой ваше приложение будет создавать множество файлов, сгруппированных в одном месте.

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

Стандартные пути к файлам

Операционные системы имеют ряд стандартных местоположений, в которых сохраняются файлы определенного типа. Компонент StandardPaths обеспечивает возможности использования этих местоположений в качестве пути к папке по умолчанию.

Следующий пример кода открывает диалоговое окно файла, настроенное на местоположение по умолчанию для рисунков, где в компоненте StandardPaths содержится указание на standardLocations для функции 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 также включает методы для определения, доступна ли запись в папку или местоположение, что важно при настройке в приложении возможности осуществлять запись в то или иное местоположение.

Создание и запись в файл

В дополнение к возможности создания и навигации по папкам, компонент FileFolder может также использоваться для создания простого текстового файла или файла JSON. Добавление следующей строки к onClicked events, в приведенном выше коде создания папки, создаст в этой папке текстовой файл:

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

Но FileFolder может только создать сам файл, он не может прочитать информацию или записать ее в файл после создания. Для этого необходимо использовать компонент File, специально используемый для такой работы с текстовыми файлами.

Этот пример кода создает текстовое поле, которое можно использовать для записи текста в файл, созданный ранее. Компонент FileInfo, используемый для возвращения информации о файле, в этом случае точно укажет местоположение текстового файла.

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

Помните, что компонент File является простым текстовым редактором. То есть, форматированный текст, а также не текстовые фрагменты не будут корректно прочитаны или отображены. Но они, тем не менее, могут быть записаны в файл.