[iOS] Accessing Files and Directories 공식문서 번역
공식문서
Accessing Files and Directories
파일을 열려면 먼저 파일 시스템에서 파일을 찾아야 합니다.
시스템 프레임워크는 라이브러리 디렉터리 및 그 내용과 같은 많은 잘 알려진 디렉터리에 대한 참조를 얻기 위한 많은 루틴을 제공합니다.
또한 알려진 디렉토리 이름에서 URL 또는 문자열 기반 경로를 작성하여 수동으로 위치를 지정할 수 있습니다.
파일의 위치를 알면 파일에 액세스하는 가장 좋은 방법을 계획할 수 있습니다.
파일 유형에 따라 여러 가지 옵션이 있을 수 있습니다.
알려진 파일 형식의 경우 일반적으로 기본 제공 시스템 루틴을 사용하여 파일 내용을 읽거나 쓰고 사용할 수 있는 object를 제공합니다.
사용자 지정 파일 형식의 경우 원시 파일 데이터를 직접 읽어야 할 수 있습니다.
Specifying the Path to a File or Directory
파일 또는 디렉터리의 위치를 지정하는 기본 방법은 NSURL 클래스를 사용하는 것입니다.
NSSstring 클래스는 경로 생성과 관련된 많은 방법을 가지고 있지만 URL은 파일 및 디렉터리를 찾는 더 강력한 방법을 제공합니다.
네트워크 리소스에서도 작동하는 앱의 경우 URL은 한 가지 유형의 개체를 사용하여 로컬 파일 시스템이나 네트워크 서버에 있는 항목을 관리할 수 있음을 의미합니다.
대부분의 URL에서 항목에 대한 경로를 얻을 때까지 적절한 NSURL 방법을 사용하여 디렉터리 및 파일 이름을 함께 연결하여 URL을 작성합니다.
이러한 방식으로 구축된 URL은 항목을 찾기 위해 디렉토리 계층을 통과하는 데 필요한 이름을 저장하기 때문에 경로 기반 URL이라고 합니다.
또한 디렉터리와 파일 이름을 함께 연결하여 문자열 기반 경로를 만들 수 있으며, 결과는 NSURL 클래스에서 사용하는 형식과는 약간 다른 형식으로 저장됩니다.
경로 기반 URL 외에도 고유한 ID를 사용하여 파일 또는 디렉토리의 위치를 식별하는 파일 참조 URL을 만들 수 있습니다.
다음 항목은 모두 유저 Documents 디렉터리에 있는 MyFile.txt이라는 파일에 대한 유효한 참조입니다.
Path-based URL: file://localhost/Users/steve/Documents/MyFile.txt
File reference URL: file:///.file/id=6571367.2773272/
String-based path: /Users/steve/Documents/MyFile.txt
…중략…
Locating Files Using Bookmarks
파일의 위치를 지속적으로 저장하려면 NSURL의 책갈피(bookmark) 기능을 사용하세요.
책갈피는 파일의 위치를 설명하는 NSData 객체에 포함된 불투명(opaque) 데이터 구조입니다.
앱 실행 사이에 경로 및 파일 참조 URL은 잠재적으로 취약하지만, 일반적으로 북마크를 사용하여 파일이 이동되거나 이름이 변경된 경우에도 파일에 대한 URL을 다시 만들 수 있습니다.
기존 URL에 대한 책갈피를 만들려면 NSURL에 [bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:](<https://developer.apple.com/documentation/foundation/nsurl/1417795-bookmarkdatawithoptions>)를 사용하세요.
[NSURLBookmarkCreationSuitableForBookmarkFile](<https://developer.apple.com/documentation/foundation/nsurlbookmarkcreationoptions/nsurlbookmarkcreationsuitableforbookmarkfile>)옵션을 지정하면 디스크에 저장하기에 적합한 NSData가 생성됩니다.
- (NSData*)bookmarkForURL:(NSURL*)url {
NSError* theError = nil;
NSData* bookmark = [url bookmarkDataWithOptions:NSURLBookmarkCreationSuitableForBookmarkFile
includingResourceValuesForKeys:nil
relativeToURL:nil
error:&theError];
if (theError || (bookmark == nil)) {
// Handle any errors.
return nil;
}
return bookmark;
}
NSURL의 [writeBookmarkData:toURL:options:error:](<https://developer.apple.com/documentation/foundation/nsurl/1408532-writebookmarkdata>)를 사용하여 영구 책갈피 데이터를 디스크에 쓰는 경우 시스템에서 디스크에 생성하는 것은 별칭(alias) 파일입니다.
별칭은 심볼릭 링크와 유사하지만 다르게 구현됩니다.
일반적으로 사용자는 시스템의 다른 위치에 있는 파일에 대한 링크를 만들 때 파인더에서 별칭을 만듭니다.
책갈피 데이터를 다시 URL로 변환하려면 URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:를 사용하세요.
- (NSURL*)urlForBookmark:(NSData*)bookmark {
BOOL bookmarkIsStale = NO;
NSError* theError = nil;
NSURL* bookmarkURL = [NSURL URLByResolvingBookmarkData:bookmark
options:NSURLBookmarkResolutionWithoutUI
relativeToURL:nil
bookmarkDataIsStale:&bookmarkIsStale
error:&theError];
if (bookmarkIsStale || (theError != nil)) {
// Handle any errors
return nil;
}
return bookmarkURL;
}