iOS 每一個 APP 都有本身的存儲空間,這個存儲空間叫作沙盒. APP能夠在本身的沙盒中進行數據存取操做,但不能訪問其餘 app 的沙盒空間.對 app 作一些數據存儲或者文件緩存時,通常都保存在沙盒中.swift
沙盒機制根據訪問權限和功能區別分爲不一樣的目錄: document,library,temp,.app, library又包含 caches 和preferences.緩存
- caches: 通常存儲的是緩存文件,例如圖片視頻等,此目錄下的文件不會再應用程序退出時刪除,在手機備份的時候,iTunes不會備份該目錄。
- preferences: 保存應用程序的全部偏好設置iOS的Settings(設置),咱們不該該直接在這裏建立文件,而是須要經過NSUserDefault這個類來訪問應用程序的偏好設置。iTunes會自動備份該文件目錄下的內容.
let homePath = NSHomeDirectory()
複製代碼
let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
複製代碼
let libraryPath = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true)
複製代碼
let cachePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)
複製代碼
由系統維護,不須要咱們手動獲取文件目錄.可藉助 UserDefault 維護app
let tmpPath = NSTemporaryDirectory()
複製代碼
let path = Bundle.main.resourcePath
let imagePath = Bundle.main.path(forResource: "temp", ofType: "png")
iOS 對文件進行管理須要用到文件管理器: FileManager.spa
FileManager.default.fileExists(atPath: filePath)
code
FileManager.default.createDirectory(atPath: path, withIntermediateDirectories: true, attributes: nil)
視頻
FileManager.default.createFile(atPath: path, contents: data, attributes: nil)
圖片
FileManager.default.removeItem(atPath: path)
資源
FileManager.default.moveItem(atPath: oldPath, toPath: newPath)
rem
FileManager.default.copyItem(atPath: oldPath, toPath: newPath)
it
FileManager.default.attributesOfItem(atPath: filePath)