-
iOS File SystemiOS 2021. 2. 25. 15:41
안녕하세요. 그린입니다!
이번 포스팅에서는 iOS File System과 fileManager 클래스에 대해 알아보겠습니다🏃
- 파일 시스템?
: 파일/자료를 탐색/접근/보관 등의 기능으로 파일을 효율적으로 관리하는 시스템 (영구 저장소 관리)
: OS <-> File System <-> Disk
- 애플 파일 시스템?
: Apple file system, APFS로 불리며 애플에서 macOS, iOS, watchOS, tvOS 모두에서 범용으로 사용하도록 만든 파일 시스템
: 디스크 파일 시스템 (디스크 드라이브 관리)
: 기존 HFS+ 대체하는 신규 파일 시스템
: iOS에서는 10.3 버전부터 macOS에서는 하이 시에라 버전부터 도입
- 애플 파일 시스템의 기능
1) 컨테이너 방법 사용하여 컨테이너 내 파티션 용량 조절
2) 카피 온 라이트 지원 -> 스냅샷 용이
3) 강력한 암호화 기능 추가
- iOS File System
: iOS 파일 시스템은 해당 각각의 앱에 맞춰져있음 (시스템 간결성 및 보안 측면)
: 앱 SandBox 디렉토리 내부에서 파일 시스템과 상호작용 (앱 설치 시 각 기능의 컨테이너를 SandBox에 담음)
1) Bundle Container: 앱 번들
2) Data Container: 앱/유저 데이터 // 해당 컨테이너안에 서브 디렉토리가 생성되어 데이터를 관리
3) iCloud Container: iCloud 관련 데이터
: iOS 파일 시스템
: macOS 파일 시스템
- 다양한 디렉토리
-. AppName.app: 번들 파일로 읽기전용, 앱 설치 시 CodeSignature에 담음
-. Document: 문서, 데이터 및 각종 파일 저장 (유저 데이터) // 유저에게 보여짐
-. Library: 유저 데이터 외 파일 // 유저에게 보여지지 않음 (서포트파일 / 캐시 / Preferences 등)
-. tmp: 임시 파일
-. iCloud: 아이클라우드 사용하는 앱 파일 저장
- FileManager
: 파일 시스템을 다루는 클래스
- Directory(폴더) 생성 단계
1) 파일매니저 인스턴스 생성
let fileManager = FileManager.default
2) 싱글톤 인스턴스 생성
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
3) 폴더 생성
let forder = documentURL.appendingPathComponent(“GREEN”) if !fileManager.fileExists(atPath: forder.path) { do { try fileManager.createDirectory(atPath: forder.path, withIntermediateDirectories: true, attributes: nil) } catch { NSLog(“ERROR”) } } }
- File 생성 단계
1) 파일매니저 인스턴스 생성
let fileManager = FileManager.default
2) 싱글톤 인스턴스 생성
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
3) 파일명 지정
let fileURL = documentsURL.appendingPathComponent(“GREEN.txt”)
4) 파일 내용 생성
let text = NSString(string: “green”) try? text.write(to: fileURL, atomically: true, encoding: String.Encoding.utf8.rawValue)
- FIle을 폴더에 생성
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0].appendingPathComponent(“GREEN”)
[참고자료]
https://ko.wikipedia.org/wiki/애플_파일_시스템
'iOS' 카테고리의 다른 글
User Notifications (0) 2021.03.18 View Drawing Cycle (0) 2021.03.15 Responder Chain / Touch Event (0) 2021.02.22 의존성 관리도구 (0) 2021.02.18 CoreData (0) 2021.02.15