//문자열로 나타낼 때. 파일, 네트워크 주소 모두 사용 가능하지만, 주로 네트워크 주소 생성시 사용
URL(string: String)
//파일주소를 나타낼 때 사용
URL(fileURLWithPath: String) //구버전
URL(filePath: String,
directoryHint: URL.DirectoryHint = .inferFromPath,
relativeTo base: URL? = nil) //신버전
//path: 문자열 형태의 파일 경로, 상대 경로 혹은 절대 경로
//directoryHint: 생성자에게 줄 수 있는 정보값으로 주소가 디렉토리인지 알려주기 위한 값. 기본값은 .notDirectory
//base: 상대 경로를 기준으로 삼을 기본 URL을 지정하는 역할
NSHomeDirectory()
생성자를 이용한다.// currentDirecotyrUrl이 nil일 경우 홈 디렉터리로 설정하기
var currentDirectoryUrl: URL?
override func viewDidLoad() {
super.viewDidLoad()
if currentDirectoryUrl == nil {
setCurrentDirectoryUrlHomeDirectory()
}
}
func setCurrentDirectoryUrlHomeDirectory() {
currentDirectoryUrl = URL(fileURLWithPath: NSHomeDirectory())
}
keys
: 리턴해줬으면 하는 url의 속성true
를 리턴appendingPathComponent
를 사용이후 createDirectory
메소드로 해당하는 url의 디렉토리를 생성하면 된다.
withIntermediateDirectories
를 true로 하면 경로에 포함된 디렉토리중에서 아직 존재하지 않는 디렉토리가 있다면 자동으로 만들어줌func addDirectory(named: String) {
guard let url = currentDirectoryUrl?.appending(named, .isDirectory) else {
return
}
do {
try FileManager.default.createDirectory(at: url, withIntermediateDirectories: true, attributes: nil)
} catch {
print(error)
}
refreshContents() //사용자정의함수. 여기서는 디렉토리 생성 후 tableView를 리로드 하는 방식
}
func addTExtFile() {
guard let targetUrl =
currentDirectoryUrl?.appending("텍스트파일")
.appendingPathExtension("txt") else {
return
}
do {
//atomically가 true일시 임시파일을 만들고, 정상완료시 최종경로로 자동 이동
//error발생 시 파일 깨짐 방지
try content.write(to: targetUrl, atomically: true, encoding: .utf8)
} catch {
print(error)
}
refreshContents()
}