[swift] File Manager

2024. 4. 5. 18:00·swift

File Manager

FileManager 클래스는 파일 시스템에 대한 접근을 제공하여 파일 및 디렉토리를 관리하는 데 사용된다. 이 클래스는 파일 및 디렉토리를 생성, 복사, 이동, 삭제하고 파일 내용을 읽고 쓰는 등의 작업을 수행할 수 있다. FileManager는 Foundation 프레임워크에 포함되어 있다.

 

File Manager 사용하기

1. 경로 접근

fileManager라는 이름을 가진 인스턴스를 생성한다.

fileManager.urls의 for는 폴더를 정해주는 요소이다. in은 제한을 걸어주는 요소이다.

let fileManager = FileManager.default
let documentURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] //.first를 사용해도 된다.

 

for에 사용할 수 있는 enum 값들(링크)

in에 사용할 수 있는 enum 값들(링크)

 

2. 경로 추가

위에서 생성한 documentURL에 appendingPahtComponent를 해줌으로써 경로를 추가한다.

let oldURL = URL(string: "~/Document")
let newURL = documentURL.appendingPathComponent("Hello")
print(newURL) // ~/Document/Hello
// 이해를 돕기위한 oldURL

 

3. 폴더 추가

fileManager에 .createDirectory 메서드를 사용해서 폴더를 추가할 수 있다.

at에는 경로 및 폴더명, withIntermediateDirectories에는 중간 디렉토리들도 만들건지, attributes에는 파일 접근 권한, 그룹 등 폴더 속성을 정의한다.

let fileManager = FileManager.default
let documentURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let directoryURL = documentURL.appendingPathComponent("NewDirectory")
do {
	try fileManager.createDirectory(at: directoryURL, withIntermediatedDirectories: false, attributes: nil)
} catch let error {
	print(error.localizedDescription)
}

 

4. 파일 추가

파일명을 fileURL에 지정해주고 NSString을 생성한다. NSString의 내부 함수에 write가 존재하기 때문에 파일에 쓰기가 가능하다.

(write가 이미 되어 있는 상태에선 새로운 값으로 덮어 씌운다.)

let fileManager = FileManager.default
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let directoryURL = documentsURL.appendingPathComponent("NewDirectory")

let fileURL = directoryURL.appendingPathComponent("test.txt")

let text = NSString(string: "Hello world")

do {
    try text.write(to: fileURL, atomically: true, encoding: String.Encoding.utf8.rawValue)
} catch let error {
    print(error.localizedDescription)
}

5. 파일 불러오기

불러올 파일을 설정하고 저장할 타입을 활용하여 불러오면 된다.

let fileManager = FileManager.default
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let directoryURL = documentsURL.appendingPathComponent("NewDirectory")
let helloPath = directoryURL.appendingPathComponent("test.txt")
do {
    let text = try String(contentsOf: helloPath, encoding: .utf8)
    print(text) // Hello world
} catch let error {
    print(error.localizedDescription)
}

6. 파일 삭제

fileManager에서 .removeItem 메서드를 활용해서 파일을 삭제할 수 있다.

let fileManager = FileManager.default
let documentsURL = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0]
let directoryURL = documentsURL.appendingPathComponent("NewDirectory")

let helloPath = directoryURL.appendingPathComponent("test.txt")

do {
    try fileManager.removeItem(at: fileURL)
} catch let error {
    print(error.localizedDescription)
}

참조 : 링크

 

'swift' 카테고리의 다른 글
  • [swift] URLSession
  • [swift] Combine
  • [swift] UNUserNotificationCenter
  • [swift] UserDefaults
GwanSon
GwanSon
버그는 도전, 코드는 해결. 열정있는 개발을 하자.
  • GwanSon
    관슨의 개발일지
    GwanSon
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • iOS (3)
      • swift (15)
      • UIKit (0)
      • swiftUI (2)
      • 알고리즘 (8)
      • CS (8)
      • 면접 (11)
      • Flutter (4)
      • 회고 (2)
      • 잡담 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    네이버 부스트캠프 후기
    Swift
    챌린지
    모듈화
    토스
    2025 토스 Next
    ios
    네이버 부스트캠프
    boj
    tuist
    후기
    부스트캠프
    부스트캠프 10기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
GwanSon
[swift] File Manager
상단으로

티스토리툴바