iOS學(xué)習(xí) 本地文件操作

每個不成熟的開發(fā)者都有這樣的場景,知道某個知識點 實際應(yīng)用的時候,必須打開百度Google才能完成,比如iOS中的本地操作,每次都要翻過。

iOS沙盒機制

1.介紹

沙盒:在受限的安全環(huán)境中運行應(yīng)用程序的一種做法,這種做法是要限制授予應(yīng)用程序的代碼訪問權(quán)限。

iOS正是這樣的沙盒機制,也就是說每個iOS程序只能在為該程序創(chuàng)建的文件系統(tǒng)中讀取文件,例如一些圖片聲音等。

2.沙盒目錄
iOS模擬器的文件在mac上是隱藏的,通過打印路徑也能找到,我們需要在終端做一點操作。
顯示文件:

defaults write com.apple.finder AppleShowAllFiles -bool true

隱藏文件:

defaults write com.apple.finder AppleShowAllFiles -bool false

然后退出終端,重新啟動Finder。
Xcode6以前的模擬器目錄是這樣的

/Users/username/Library/Application Support/iPhone Simulator/

現(xiàn)在的目錄做了改變

/Users/your name/Library/Developer/CoreSimulator/Devices/your number/data/Containers/Data/Application/

默認情況下,每個沙盒含有3個文件夾:Documents, Library 和 tmp。因為應(yīng)用的沙盒機制,應(yīng)用只能在幾個目錄下讀寫文件

  • Documents:蘋果建議將程序中建立的或在程序中瀏覽到的文件數(shù)據(jù)保存在該目錄下,iTunes備份和恢復(fù)的時候會包括此目錄
  • Library:存儲程序的默認設(shè)置或其它狀態(tài)信息;
  • Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應(yīng)用退出刪除
  • tmp:提供一個即時創(chuàng)建臨時文件的地方。
  • iTunes在與iPhone同步時,備份所有的Documents和Library文件。
  • iPhone在重啟時,會丟棄所有的tmp文件

具體文件操作

獲取程序的Home目錄

NSString *homeDirectory = NSHomeDirectory();
NSLog(@"path:%@", homeDirectory);

獲取document,cache,library等目錄

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];

將方法中NSDocumentDirectory替換即可
這是一個枚舉,里面有各種搜索路徑

typedef NS_ENUM(NSUInteger, NSSearchPathDirectory)

我們可以借助這個做一些簡單的應(yīng)用,比如圖片的存取

NSArray *array = [[NSArray alloc] initWithObjects:@"hello",nil];
NSString *filePath = [homeDirectory stringByAppendingPathComponent:@"Pictures"];
[array writeToFile:filePath atomically:YES];

然后就可以通過NSPicturesDirectory的路徑打印出來了

NSArray *data = [[NSArray alloc]initWithContentsOfFile:filePath];
NSLog(@"%@", data);

NSFileManager

官方給文件操作封裝的處理類

An NSFileManager object lets you examine the contents of the file system and make changes to it.

首先創(chuàng)建fileManager

NSFileManager *fileManager = [NSFileManager defaultManager];  

上文中創(chuàng)建Pictures,在這里我們就可以用另一種方法

[fileManager createFileAtPath:filePath contents:[string  dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];

文件管理這個類有很多很多用法,擼主無法一一列出,具體可以直接去看官方文檔,很詳細,用處也一目了然。這里有一些用法可以看看。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容