파일 시스템은 모든 운영 체제에서 중요한 부분이다. 결국, 이것은 사용자가 자신의 물건을 보관하는 곳이다. 파일 시스템의 구성은 사용자가 파일을 찾는 데 중요한 역할을 한다. 또한 조직은 앱과 시스템 자체가 사용자를 지원하는 데 필요한 리소스를 쉽게 찾고 액세스 할 수 있도록 한다.
이 문서는 macOS, iOS 및 iCloud 용 소프트웨어를 개발하는 개발자를 대상으로 작성되었다. 시스템 인터페이스를 사용하여 파일 및 디렉토리에 액세스하는 방법과 iCloud 간에 파일을 이동하는 방법을 보여준다. 또한 이 문서에서는 파일 작업을 가장 잘 수행하는 방법에 대한 지침을 제공하며, 새로 만든 파일을 어디에 배치해야 하는지 보여준다.
중요
macOS 앱에서 App Sandbox를 채택하면 많은 파일 시스템 기능의 동작이 변경된다. 예를 들어 앱의 컨테이너 디렉토리 외부에 있는 위치에 대한 액세스 권한을 얻으려면 적절한 권한을 요청해야 한다. 파일 시스템 리소스에 대한 지속적으로 액세스를 하려면 NSURL 클래스의 보안 범위 북마크 기능 또는 CFURLRef opaque 타입을 사용해야 한다. 앱 지원 파일의 위치(사용자의 홈 폴더가 아닌 컨테이너에 상대적인)와 열기 및 저장 다이어로그의 동작 (AppKit이 아니라 macOS 보안 기술인 Powerbox에서 제공됨)가 변경되었다. 이러한 모든 변경 사항에 대한 자세한 내용은 App Sandbox Design Guide를 참조하시오.
At a Glance
파일 시스템을 효과적으로 사용하려면 파일 시스템에서 예상할 수 있는 사항과 액세스에 사용할 수 있는 기술을 알아야 한다.
The File System Imposes a Specific Organization
iOS 및 macOS의 파일 시스템은 사용자와 앱 모두에 대해 파일을 정리할 수 있도록 구성되어 있다. 코드의 관점에서 볼 때 잘 구성된 파일 시스템을 사용하면 앱에 필요한 파일을 쉽게 찾을 수 있다. 물론 파일을 만드는 위치도 알아야 한다.
관련 챕터 및 부록
File System Basics, macOS Library Directory Details, File System Details
Access Files Safely
macOS와 같은 다중 사용자 시스템에서는 다른 앱이 파일을 사용하는 동시에 하나 이상의 앱이 파일 읽기 또는 쓰기를 시도할 수 있다. NSFileCoordinator 및 NSFilePresenter 클래스를 사용하면 파일 무결성을 유지하고 다른 앱에서 파일을 사용할 수 있는 경우(예 : 현재 TextEdit 문서를 이메일로 보내기) 최신 버전이 전송되는지 확인할 수 있다.
관련 챕터
The Role of File Coordinators and Presenters
How You Access a File Depends on the File Type
파일마다 코드별로 다른 처리가 필요하다. 앱에서 정의한 파일 형식의 경우 콘텐츠를 바이트의 바이너리 스트림으로 읽을 수 있다. 하지만 더 일반적인 파일 형식의 경우 iOS 및 macOS는 해당 파일을 더 쉽게 읽고 쓸 수 있도록 높은 수준의 지원을 제공한다.
관련 섹션
Choose the Right Way to Access Files
System Interfaces Help You Locate and Manage Your Files
하드 코딩 된 경로 이름은 깨지기 쉽고 시간이 지남에 따라 손상되기 쉬우므로 시스템은 잘 알려진 위치에서 파일을 검색하는 인터페이스를 제공한다. 이러한 인터페이스를 사용하면 코드가 더욱 견고해지고 미래에 대비할 수 있으므로 파일이 이동하는 위치에 관계없이 파일을 찾을 수 있다.
관련 챕터
Accessing Files and Directories
Users Interact with Files Using the Standard System Panels
사용자가 만들고 관리하는 파일의 경우 코드는 스탠다드 열기 및 저장 패널을 사용하여 해당 파일의 위치를 요청할 수 있다. 스탠다드 패널은 Finder가 제공하는 것과 일치하는 탐색 가능한 버전의 파일 시스템을 사용자에게 제공한다. 사용자 정의 없이 이러한 패널을 사용하거나, 기본 동작을 수정하거나, 사용자 지정 콘텐츠로 보강 할 수 있다. 샌드박스 앱도 패널을 사용하여 파일에 액세스 할 수 있다. 기본 보안 레이어와 함께 작동하여 사용자가 명시적으로 선택한 샌드박스 외부의 파일에 대한 예외를 허용하기 때문이다.
관련 챕터
Using the Open and Save Panels
Read and Write Files Asynchronously
파일 작업을 하려면 디스크 또는 네트워크 서버에 액세스해야 하므로 항상 앱의 보조 스레드에서 파일에 액세스해야 한다. 파일 읽기 및 쓰기를 위한 기술 중 일부는 사용자가 아무것도 할 필요 없이 비동기적으로 실행되는 반면 다른 기술은 사용자 고유의 실행 컨텍스트를 제공해야 한다. 모든 기술은 본질적으로 동일한 작업을 수행하지만 서로 다른 수준의 단순성과 유연성을 제공한다.
파일을 읽고 쓸 때 파일 코디네이터를 사용하여 파일에 대해 수행하는 모든 작업으로 인해 파일을 관리하는 다른 앱에 문제가 발생하지 않도록 해야 한다.
관련 챕터
Techniques for Reading and Writing Files Without File Coordinators
Move, Copy, Delete, and Manage Files Like the Finder
시스템 인터페이스는 Finder가 지원하는 것과 동일한 타입의 동작을 모두 지원한다. 사용자와 마찬가지로 파일과 디렉토리를 이동, 복사, 생성 및 삭제할 수 있다. 프로그래밍 인터페이스를 사용하면 디렉토리 내용을 반복하고 보이지 않는 파일로 훨씬 더 효율적으로 작업 할 수 있다. 더 중요한 것은 앱의 메인 스레드를 차단하지 않도록 대부분의 작업을 비동기식으로 수행 할 수 있다는 것이다.
관련 챕터
Managing Files and Directories
Optimize Your File-Related Operations
파일 시스템은 컴퓨터에서 가장 느린 부분 중 하나이므로 효율적인 코드를 작성하는 것이 중요하다. 파일 시스템 코드를 최적화하는 것은 수행하는 작업을 최소화하고 수행하는 작업이 효율적으로 수행되도록 하는 것이다.
관련 챕터
Performance Tips
[원문]
About Files and Directories
About Files and Directories The file system is an important part of any operating system. After all, it’s where users keep their stuff. The organization of the file system plays an important role in helping the user find files. The organization also make
developer.apple.com
'프로그래밍 > iOS' 카테고리의 다른 글
[SwiftUI] UIViewRepresentable 란 무엇인가? (0) | 2022.12.20 |
---|---|
File System Programming Guide (2) - File System Basics (0) | 2021.01.07 |
FileManager (0) | 2021.01.07 |
Filling a Table with Data (0) | 2021.01.05 |
UITableView (0) | 2021.01.05 |