제한적인 몇 가지 저장 기능을 비롯한 앱의 대다수 동작과 작업은 앱 자체 내에서 수행할 수 있지만, 대부분의 앱에는 기기의 파일에 대한 일정 수준의 접근 권한이 필요합니다. 파일 생성/파일에 쓰기, 이미 저장한 사진 선택, 온라인 원본에서 파일 다운로드 등의 작업을 수행하려면 파일 또는 폴더 관리를 어느 정도 수행해야 합니다. 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 컴포넌트를 사용하면 TXT 파일을 안정적으로 찾을 수 있습니다.
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 컴포넌트는 일반 텍스트 편집기입니다. 따라서 형식이 지정된 텍스트와 텍스트가 아닌 콘텐츠를 올바르게 읽거나 보여 줄 수 없습니다. 하지만 이러한 텍스트와 콘텐츠를 파일에 쓸 수는 있습니다.