iOS 沙盒機制

iOS 每一個 APP 都有本身的存儲空間,這個存儲空間叫作沙盒. APP能夠在本身的沙盒中進行數據存取操做,但不能訪問其餘 app 的沙盒空間.對 app 作一些數據存儲或者文件緩存時,通常都保存在沙盒中.swift

沙盒機制簡介

目錄結構

沙盒機制根據訪問權限和功能區別分爲不一樣的目錄: document,library,temp,.app, library又包含 caches 和preferences.緩存

  • document: 保存應用運行時生成的須要持久化的數據iTunes會自動備份該目錄。蘋果建議將在應用程序中瀏覽到的文件數據保存在該目錄下.
  • library: 這個目錄下有兩個目錄
  • caches: 通常存儲的是緩存文件,例如圖片視頻等,此目錄下的文件不會再應用程序退出時刪除,在手機備份的時候,iTunes不會備份該目錄。
  • preferences: 保存應用程序的全部偏好設置iOS的Settings(設置),咱們不該該直接在這裏建立文件,而是須要經過NSUserDefault這個類來訪問應用程序的偏好設置。iTunes會自動備份該文件目錄下的內容.
  • temp: 臨時文件目錄,在程序從新運行的時候,和開機的時候,會清空tmp文件夾。
  • .app: 這個就是可運行的應用文件,帶有簽名的文件包,包含應用程序代碼和靜態數據.

特色

  • 每一個應用程序都在本身的沙盒內.
  • 不能隨意跨越本身的沙盒去訪問別的應用程序沙盒的內容.
  • 應用程序向外請求或接收數據都須要通過權限認證.

沙盒操做

獲取沙盒路徑

獲取沙盒根路徑

let homePath = NSHomeDirectory()
複製代碼

獲取 document 路徑

let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
複製代碼

獲取 library 路徑

let libraryPath = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true)
複製代碼

獲取 cache 路徑

let cachePath = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)
複製代碼

獲取 preferences 路徑

由系統維護,不須要咱們手動獲取文件目錄.可藉助 UserDefault 維護app

獲取 tmp 路徑

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)

相關文章
相關標籤/搜索