애플의 Foundation 프레임워크에서 제공하는 FileManager 클래스는 파일 시스템을 관리하고 상호작용하는 데 사용되는 매우 유용한 도구입니다. 이 클래스는 파일 및 디렉토리의 생성, 복사, 이동, 삭제 등을 포함한 다양한 작업을 수행할 수 있도록 도와줍니다.
주요 기능 및 메서드
1. 파일 및 디렉토리 생성
• createFile(atPath:contents:attributes:): 지정된 경로에 파일을 생성합니다.
• createDirectory(at:withIntermediateDirectories:attributes:): 지정된 URL에 디렉토리를 생성합니다.
2. 파일 및 디렉토리 복사
• copyItem(at:to:): 파일이나 디렉토리를 한 위치에서 다른 위치로 복사합니다.
3. 파일 및 디렉토리 이동
• moveItem(at:to:): 파일이나 디렉토리를 한 위치에서 다른 위치로 이동합니다.
4. 파일 및 디렉토리 삭제
• removeItem(at:): 지정된 경로의 파일이나 디렉토리를 삭제합니다.
5. 파일 및 디렉토리 속성
• attributesOfItem(atPath:): 파일이나 디렉토리의 속성을 반환합니다.
• fileExists(atPath:): 지정된 경로에 파일이나 디렉토리가 존재하는지 확인합니다.
6. 디렉토리 내용
• contentsOfDirectory(atPath:): 지정된 경로의 디렉토리 내의 항목 목록을 반환합니다.
• subpathsOfDirectory(atPath:): 지정된 경로의 디렉토리 내 모든 하위 경로를 반환합니다.
7. 파일 읽기 및 쓰기
• contents(atPath:): 지정된 경로의 파일 내용을 Data 객체로 반환합니다.
• write(to:options:): 지정된 경로에 Data 객체를 씁니다.
사용 예제
import Foundation
let fileManager = FileManager.default
// 디렉토리 생성
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
let newDirURL = documentsURL.appendingPathComponent("NewDirectory")
do {
try fileManager.createDirectory(at: newDirURL, withIntermediateDirectories: true, attributes: nil)
print("Directory created successfully!")
} catch {
print("Error creating directory: \(error)")
}
// 파일 생성
let fileURL = newDirURL.appendingPathComponent("example.txt")
let content = "Hello, FileManager!".data(using: .utf8)
fileManager.createFile(atPath: fileURL.path, contents: content, attributes: nil)
// 파일 존재 여부 확인
if fileManager.fileExists(atPath: fileURL.path) {
print("File exists!")
}
// 파일 읽기
if let fileContent = fileManager.contents(atPath: fileURL.path) {
print("File content: \(String(data: fileContent, encoding: .utf8)!)")
}
// 파일 삭제
do {
try fileManager.removeItem(at: fileURL)
print("File deleted successfully!")
} catch {
print("Error deleting file: \(error)")
}
'Apple > Apple_Foundation' 카테고리의 다른 글
Swift에서의 네트워킹: URLSession 개념, 장점, 그리고 실전 활용법 (0) | 2024.08.16 |
---|---|
iOS에서 HTTP 쿠키 관리하기: 개념부터 실습까지 (0) | 2024.08.12 |
URLCache (0) | 2024.07.01 |