一、沙盒:每一個應用程序都有一個沙盒,只能在自己的沙盒中進行文件訪問,iOS8以后開放了部分文件
1、沙盒目錄結構:
NSSearchPathForDirectoriesInDomains(獲取)介紹:http://blog.csdn.net/xingxing513234072/article/details/24184917
? ? ? documents(用于存儲用戶數據,iTunes備份和恢復的時候會包括此目錄,所以,蘋果建議將程序中建立的或在程序中瀏覽到的文件數據保存在該目錄下。)(數據持久化保存)
//獲取document的路徑:
? ? ? ?let documents = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
print(documents[0])
print("11"+NSHomeDirectory())
? ? ? library(包含兩個子目錄:Caches 和 Preferences。Caches用來存放用戶需要換成的文件。Preferences是APP的偏好設置,可以通過NSUserDefaults來讀取和設置。)(緩存文件,應用退出不會自動刪除)
//獲取library的路徑:
let lib = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true)
print("lib = " + lib[0])
let caches = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)
print("caches = " + caches[0])
//prefer 不可以直接獲取
let prefer = lib[0] + "/Preferences"
print("prefer = " + prefer)
? ? ? tmp(存儲臨時文件,應用退出會自動刪除)
//獲取temp目錄 獲取到沙盒根目錄(NSHomeDirectory) 再拼接temp目錄
let temp = NSHomeDirectory() + "/tmp"
print("tmp = " + temp)
2、打開沙盒模擬器的方法:
? ? ? 直接在Finder->前往->前往文件夾,輸入上面的內容即可:/Users/140xiangwenjing/Library/Developer/CoreSimulator/Devices/27D1ABAB-8FD8-4AEB-ACF5-968100682C81/data/Containers/Data/Application/5767F33A-EF32-45EB-BBB1-20F27DD1AE63/tmp
通過Finder一步步查找
? ? 模擬器上的APP的沙盒實在用戶目錄下的資源庫里面,但是資源庫是隱藏文件夾。所以查看沙盒之前,現將隱藏文件夾顯示出來。
顯示隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
隱藏隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
注意:大文件不能在iTunes同步的文件夾中(上線被拒絕)
二、簡單讀寫操作:http://www.lxweimin.com/p/0471b2d0fe2c
String、Data、Array、Directory
FileManager :文件管理類(單例)
//單例(創建對象文件是一樣的)
//獲取當前應用程序 UIApplication.shared.keyWindow(獲取主平面)? ? UserDefaults.standard? 單例在程序運行期間不會被釋放
(encoding編碼格式:encoding:.utf8)
注意:單例在程序運行期間不會被釋放,一般用于資源共享
//1、創建文件夾
//2、移動文件夾/重命名(判斷是湊存在文件夾在移動,先執行4)
//3、刪除
//4、是否存在
FileHandle(文件句柄)
Write...文件追加
Read...讀取某一部分
3、復雜對象寫入:http://www.lxweimin.com/p/0471b2d0fe2c
//1、遵守NSCoding協議,實現兩個方法()
//2、現創建對象
//3、創建一個NSMutableData
//4、根據NSMutableData創建Acr對象(歸檔工具)
//5、Acr對象encoding方法
//6、寫入data對象