Files and folders

While much of your app's behavior and operations can be performed within the app itself, including some limited storage capabilities, most apps require some degree of access to files on the device. Creating and writing to files, selecting already saved photos, and downloading files from an online source all require some degree of file or folder management. The AppStudio Framework has multiple components intended to create, organize, and navigate folders and files.

Folder management

The AppFramework FileFolder component provides tools to manipulate, navigate, create, and delete folders and file paths. If your app is creating or downloading new files of any type, using FileFolder can be important for keeping the internal file structure of your app orderly and consistent.

This code sample creates a new folder in a set location, which is ideal if your app will be creating a large number of files that need to be grouped together.

Use dark colors for code blocksCopy
1
2
3
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

Standard file paths

Operating systems have specific standard locations to save certain types of file. The StandardPaths component provides a means to use these locations as a default folder path.

This code sample opens a file dialog specifically to the default location for pictures, using the StandardPaths component' standardLocations enum to inform the AppFramework resolvedPathUrl function.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
FileDialog {
    title: qsTr("Open Photo")
    folder: Qt.platform.os == "ios"
            ? "file:assets-library://"
            : AppFramework.standardPaths.defaultFolder(StandardPaths.PicturesLocation).url

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

StandardPaths also has methods to determine if a folder or location can be written to, which is useful for configuring an app to write to an appropriate location.

Create and write to a file

In addition to creating and navigating folders, the FileFolder component can also be used for creating simple text and JSON files. Adding the following line to the onClicked events in the folder creation sample above will create a text file within the folder:

Use dark colors for code blocksCopy
1
fileFolder.writeTextFile("TestFile.txt", "Contents of the file")

However, FileFolder can only create the file initially and cannot read or write to it after creation. To do this, the File component must be used; a component specifically used to work with text files in this way.

This code sample presents a text field that can be used to write to the text file created previously. The FileInfo component, used to return information about a file, is used in this case to reliably locate the text file.

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
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();
}

Keep in mind that the File component is a plain text editor. This means that formatted text, as well as non-text content, will not read or display correctly. They can still be written to the file, however.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.