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