[Swift] FileManager๋ก ํ์ผ ์ฝ๊ณ ์ฐ๊ธฐ
์๋ฉด ์ธ๋ชจ์๋ ์ค์ํํธ ํ: FileManager
FileManager
FileManager๋ Foundation์์ ์ ๊ณตํ๋ ํ์ผ์ ์ถ๋ ฅ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํด๋์ค์ ๋๋ค. ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ, ๋ณต์ฌ, ์ญ์ ์ ๊ฐ์ด ํ์ผ์ ์ถ๋ ฅ๊ณผ ๊ด๋ จ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
FileManager ์ธ์คํด์ค ์์ฑ
FileManager๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋จผ์ ์ธ์คํด์ค๋ฅผ ์์ฑํด์ผํฉ๋๋ค. FileManager๋ ์ฑ๊ธํค ํจํด์ ์ฌ์ฉํด์ ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. FileManager์ default ํ๋กํผํฐ์ ์ ๊ทผํ๋ฉด ์ฑ๊ธํค ์ธ์คํด์ค๊ฐ ๋ฐํ๋ฉ๋๋ค.
let fileManager = FileManager.default
์์ ํ ๊ฒฝ๋ก ์ง์
FileManager๋ฅผ ํตํด ์ ๊ทผํ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ ๊ทผํ ์ ์์ต๋๋ค.
import Foundation
do {
let desktopDirectory = FileManager.default.urls(for: .desktopDirectory, in: .userDomainMask).first
let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
let libraryDirectory = FileManager.default.urls(for: .libraryDirectory, in: .userDomainMask).first
let userDirectory = FileManager.default.urls(for: .userDirectory, in: .userDomainMask).first
let downloadDirectory = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first
let trashDirectory = FileManager.default.urls(for: .trashDirectory, in: .userDomainMask).first
} catch {
print("Error!")
}
- for ์ ๋ค์ด๊ฐ๋ ๊ฐ์ FileManager.SearchPathDirectory ๋ก ํ์ผ์ ์ฐพ์ ๋๋ ํ ๋ฆฌ๋ฅผ ์ง์ ํด์ค ์ ์์ต๋๋ค. ๋ค์ด๋ก๋ ํด๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํด๋ ๋ฑ ๋ค์ํ ํด๋๋ฅผ ์ง์ ํด์ค ์ ์์ต๋๋ค.
- in ์ ๋ค์ด๊ฐ๋ ๊ฐ์ FileManager.SearchPathDomainMask ๋ก ํ์ผ์ ์ฐพ์ ์์คํ ๋๋ฉ์ธ์ ์ง์ ํด์ค ์ ์์ต๋๋ค.
๊ฒฝ๋ก ์ถ๊ฐ
์ค์ ๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก์ ์ถ๊ฐ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ค์ ํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ๊ฐํด์ค ์ ์์ต๋๋ค.
let filename = "file.txt"
let filepath = documentsDirectory?.appendingPathComponent(filename)
let dirname = "dir"
let dirpath = documentsDirectory?.appendingPathComponent(dirname)
- ์ด๋ ๊ฒ ํ๋ฉด document ๋๋ ํ ๋ฆฌ์ ํ์์ ์๋ก์ด ํ์ผ์ ์์ฑํ๋๋ก ์ง์ ํ ์ ์์ต๋๋ค.
ํ์ผ ์์ฑ
์ค์ ํ ๊ฒฝ๋ก์ ์๋ก์ด ํ์ผ์ ์ถ๊ฐํ๋ ค๋ฉด write ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค.
let data = "Hello World!"
try data.write(to: filepath, atomically: false, encoding: .utf8)
- to ์๋ ์์ฑํ ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- atomically๋ฅผ true๋ก ํ๋ฉด ํ์ผ์ ๋ฐฑ์ ํ์ผ์ ๋จผ์ ์์ฑํ ๋ค์ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์์ ๋๋ง ํด๋น ํ์ผ์ ํ์ผ๊ฒฝ๋ก์ ์์ฑํฉ๋๋ค. false๋ก ์ค์ ํ๋ฉด ํ์ผ์ ๊ณง๋ฐ๋ก ์ง์ ํ ๊ฒฝ๋ก์ ์์ฑํฉ๋๋ค.
๋๋ ํ ๋ฆฌ ์์ฑ
createDirectory ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ผ ๋ฟ๋ง ์๋๋ผ ๋๋ ํ ๋ฆฌ๋ ์์ฑํ ์ ์์ต๋๋ค.
try FileManager.default.createDirectory(at: dirpath, withIntermediateDirectories: false, attributes: nil)
- withIntermediateDirectories๋ฅผ true๋ก ํ๋ฉด ์กด์ฌํ์ง ์๋ ์ค์ฒฉ๋ ๋๋ ํ ๋ฆฌ ์ญ์ ๋ชจ๋ ์์ฑํฉ๋๋ค. false๋ก ์ค์ ํ๋ฉด ์กด์ฌํ์ง ์๋ ์ค์ฒฉ๋ ๋๋ ํ ๋ฆฌ๊ฐ ์ค์ ๋๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ์ผ ๋ณต์ฌ
ํ์ผ ๋ณต์ฌ๋ copyItem ๋ฉ์๋๋ก ํ ์ ์์ต๋๋ค.
try FileManager.default.copyItem(atPath: srcPath, toPath: destPath)
- atPath์ ์๋ ํ์ผ์ toPath๋ก ๋ณต์ฌํฉ๋๋ค.
ํ์ผ ์ญ์
ํ์ผ ์ญ์ ๋ removeItem ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
try FileManager.default.removeItem(at: filepath)
- ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด at ๊ฒฝ๋ก์ ์๋ ํ์ผ์ด ์ญ์ ๋ฉ๋๋ค.
ํ์ผ ์ฝ๊ธฐ
ํ์ผ์ ์ฝ์ ๋๋ FileManager๋ฅผ ์ฌ์ฉํ์ง๋ ์์ง๋ง String ํด๋์ค์ ์์ฑ์๋ฅผ ์ฌ์ฉํด์ URL ํ์ ์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ํ์ผ์ ๋ด์ฉ์ ํ๋ฒ์ ์ฝ์ด์ฌ ์ ์์ต๋๋ค.
let data = String(contentsOf: filepath, encoding: .utf8)
'๐ ์์ด-์ค-์์ค > ๐ค ์ค์ํํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] Swift์ ์ฐ์ฒด๊ตญ, NotificationCenter (0) | 2021.09.19 |
---|---|
[Swift] Struct vs. Class (2), Struct์์ ์ฐธ์กฐ ํ์ , Class ์์ ๊ฐ ํ์ ๋ณ์๊ฐ ์์ ๋ (0) | 2021.08.26 |
[Swift] Struct vs. Class (1), ์ธ์ ๋ญ ์จ์ผํ ๊น? (0) | 2021.08.25 |
[Swift] ๋ฌธ์์ด์ ์ซ์๋ง ์๋์ง ํ์ธํ๊ธฐ (0) | 2021.07.18 |
[Swift] Int ๋ฐ์ดํฐ๋ฅผ Character๋ก ํ๋ณํํ๊ธฐ (0) | 2021.07.17 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote