虽然许多应用程序的行为和操作都可以在应用程序内部自行完成(包括一些有限的存储功能),但是大多数应用程序都需要对设备上的文件拥有某种程度的访问权限。 创建和写入文件、选择已保存的照片,以及从在线源下载文件都需要进行某种程度的文件或文件夹管理。 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 事件添加以下行将在文件夹内创建文本文件:
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 组件是一款纯文本编辑器。 这意味着它无法正确读取或显示格式化文本和非文本内容。 但是,可以将这些内容写入到文件中。