Pliki i foldery

Chociaż duża część operacji aplikacji może być przeprowadzana w ramach samej aplikacji (dotyczy to również niektórych ograniczonych możliwości przechowywania), większość aplikacji wymaga w większym lub mniejszym stopniu dostępu do plików na urządzeniu. Tworzenie i zapisywanie do plików, wybieranie wcześniej zapisanych zdjęć i pobieranie plików ze źródła w trybie online wymagają pewnych możliwości zarządzania plikami lub folderami. Moduł AppStudio Framework zawiera wiele komponentów przeznaczonych do tworzenia i porządkowania plików i folderów oraz do nawigowania wśród nich.

Zarządzanie folderami

Komponent FileFolder modułu AppFramework udostępnia narzędzia przeznaczone do tworzenia i usuwania folderów oraz ścieżek do plików, jak również do manipulowania nimi i nawigowania po nich. Jeśli aplikacja tworzy lub pobiera nowe pliki dowolnego typu, komponent FileFolder umożliwi utrzymanie spójnej i uporządkowanej wewnętrznej struktury plików.

Poniższy przykładowy kod tworzy nowy folder w ustawionej lokalizacji, która jest idealna w przypadku tworzenia dużej liczby plików, które muszą być razem pogrupowane.

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

Standardowe ścieżki do plików

Systemy operacyjne mają specjalne standardowe lokalizacje przeznaczone do zapisywania niektórych typów plików. Komponent StandardPaths umożliwia użycie tych lokalizacji jako domyślnej ścieżki do folderu.

Poniższy kod otwiera okno dialogowe pliku na konkretną domyślną lokalizację dla obrazów, przy czym dane do funkcji resolvedPathUrl modułu AppFramework są przekazywane przy użyciu wartości typu wyliczeniowego standardLocations komponentu StandardPaths.

FileDialog {
    title: qsTr("Open Photo")
    folder: Qt.platform.os == "ios"
            ? "file:assets-library://"
            : AppFramework.standardPaths.defaultFolder(StandardPaths.PicturesLocation).url

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

Komponent StandardPaths zawiera również metody sprawdzające, czy możliwe jest zapisywanie w folderze lub lokalizacji. Jest to użyteczne w przypadku konfigurowania aplikacji do zapisywania w odpowiedniej lokalizacji.

Tworzenie i zapis do pliku

Oprócz tworzenia folderów i nawigowania po nich komponent FileFolder może być także używany do tworzenia prostych plików tekstowych i plików JSON. Dodanie następującego wiersza do zdarzeń onClicked w powyższym przykładowym kodzie dotyczącym tworzenia folderu spowoduje utworzenie pliku tekstowego w folderze:

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

Jednak komponent FileFolder może utworzyć plik tylko wewnętrznie, a po utworzeniu nie może go odczytać ani do niego zapisać. Aby można było to zrobić, należy użyć komponentu File, który jest specjalnie przeznaczony do pracy z plikami tekstowymi w opisany sposób.

Poniższy przykładowy kod prezentuje pole tekstowe, które może być używane do zapisywania do wcześniej utworzonego pliku tekstowego. Aby bezbłędnie zlokalizować plik tekstowy, w tym przypadku stosowany jest komponent FileInfo używany do zwracania informacji o pliku.

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

Należy pamiętać, że komponent File jest edytorem zwykłego tekstu. Oznacza to, że tekst sformatowany, jak również treść inna niż tekst, nie będzie odczytywana i wyświetlana poprawnie. Nadal jednak będzie można zapisywać do pliku.