獲取Document的路徑的方法有幾個(gè)奕删,下面我來(lái)說(shuō)一下我的做法??
// fileName就是保存文件的文件名
NSUserDefaults*userdefault = [NSUserDefaults standardUserDefaults];
//找到Documents文件所在的路徑
NSArray*path =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
NSString*filePath = [pathobjectAtIndex:0];
這個(gè)filePath就能獲取到Document的文件夾下了酒觅,之后再根據(jù)自己的需求翩瓜,拼接不同的文件路徑。
接下來(lái)便是關(guān)于存儲(chǔ)數(shù)據(jù)交惯,不管是NSArray,NSDirectory,NSData,或者其他數(shù)據(jù)罩阵。
這些數(shù)據(jù)類型都是能夠存儲(chǔ)杜耙,存儲(chǔ)接口是[class ?writeToFile:(文件路徑) ? atomically:YES];
獲取文件也很簡(jiǎn)單烟勋,NSArray---->arrayWithContentsOfFile
NSData---->dataWithContentsOfFile规求;NSDirectory---->directoryWithContentsOfFile
**********
以上都是耳熟能詳?shù)模暇W(wǎng)或者基本上書(shū)籍中都會(huì)提到的卵惦。
下面我來(lái)說(shuō)一下我遇到的問(wèn)題阻肿,我的項(xiàng)目需求是在拍照時(shí),隨時(shí)上傳圖片沮尿,如果上傳圖片過(guò)程中出現(xiàn)網(wǎng)絡(luò)中斷丛塌、不穩(wěn)定、或者網(wǎng)速不給力蛹找,這樣導(dǎo)致上傳圖片失敗的姨伤,要求把失敗的圖片存儲(chǔ)本地,在網(wǎng)絡(luò)穩(wěn)定重新啟動(dòng)應(yīng)用時(shí)庸疾,遍歷路徑下的文件,再次上傳圖片5北唷届慈!
原先以為比較簡(jiǎn)單,上面的nsdata類的存儲(chǔ)獲取接口一調(diào)就完事忿偷,但是現(xiàn)實(shí)啪啪打臉金顿。出現(xiàn)存儲(chǔ)文件成功,我把多個(gè)文件路徑放在NSArray中存入本地Document中鲤桥。但是在應(yīng)用重新啟動(dòng)拿到文件路徑揍拆,要獲取圖片數(shù)據(jù)時(shí),NSFileManager檢測(cè)路徑下文件根本不存在茶凳!
多次測(cè)試發(fā)現(xiàn)問(wèn)題所在嫂拴,那就是上述能獲取到Document文件夾的filePath每次都是在變化的,而我在存儲(chǔ)的路徑當(dāng)時(shí)的完整路徑贮喧,如下??
/var/mobile/Containers/Data/Application/2BE22D43-4A6C-42EE-892F-107E508E6540/Documents/20170705145022007.jpg
其中2BE22D43-4A6C-42EE-892F-107E508E6540這段序列每次都在變化
遇到這樣存儲(chǔ)本地?cái)?shù)據(jù)的問(wèn)題筒狠,只把文件名也就是20170705145022007.jpg存儲(chǔ)在NSArray中,獲取數(shù)據(jù)時(shí)重新調(diào)用Document路徑拼接箱沦,這樣便能成功拿到數(shù)據(jù)辩恼!