ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS File System
    iOS 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/애플_파일_시스템

    https://medium.com/@Alpaca_iOSStudy/ios-파일-시스템-35e61a85a3f8

    https://developer.apple.com/library/archive/documentation/FileManagement/Conceptual/FileSystemProgrammingGuide/FileSystemOverview/FileSystemOverview.html#//apple_ref/doc/uid/TP40010672-CH2-SW13

    https://zeddios.tistory.com/435

    '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
Designed by Tistory.