iOS筆記--本地文件的保存,讀取胡嘿,刪除操作

在iOS中本地文件以下應(yīng)該就是常用的
  • Documents :用于存儲(chǔ)用戶數(shù)據(jù)或其它應(yīng)該定期備份的信息蛉艾。(在我的項(xiàng)目中, 我用來存放下載到本地的音視頻數(shù)據(jù)衷敌。)
  • Library 目錄:這個(gè)目錄下有兩個(gè)子目錄:Caches 和 Preferences
    Preferences 目錄:包含應(yīng)用程序的偏好設(shè)置文件勿侯。您不應(yīng)該直接創(chuàng)建偏好設(shè)置文件,而是應(yīng)該使用NSUserDefaults類來取得和設(shè)置應(yīng)用程序的偏好.
    Caches 目錄:用于緩存一些信息
  • tmp 目錄:這個(gè)目錄用于存放臨時(shí)文件缴罗,保存應(yīng)用程序再次啟動(dòng)過程中不需要的信息助琐。

下面記錄一些項(xiàng)目中用到的部分

保存

  • 通用部分-獲取路徑
//獲取Documents路徑
NSArray *Document = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * DocumentsPath = [Document objectAtIndex:0];

//獲取Caches路徑
NSArray *Caches = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachesDir = [Caches objectAtIndex:0];
  • 保存對(duì)象到本地
/*
自定義的對(duì)象要實(shí)現(xiàn)NSCoding協(xié)議,比如我這是要存入一個(gè)地圖類型的model
采用plist文件形式來保存
*/
//保存對(duì)象到本地
+(void)saveSearchModelToLocal:(AMapTip *)tip
{
/*
具體保存對(duì)象時(shí)候面氓,我所遇到的問題有以下幾點(diǎn)
1,要保存的對(duì)象要實(shí)現(xiàn)NSCoding歸檔協(xié)議兵钮,一般情況第三方比如高德地圖中的model一般都已經(jīng)實(shí)現(xiàn),自定義的要自己實(shí)現(xiàn)一下
2,保存對(duì)象前要檢測(cè)下是否已有相同對(duì)象舌界,避免重復(fù)掘譬,
3,保證每次保存的對(duì)象都是0的位置呻拌,使用insert插入到指定位置
*/
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"demonTest.plist"];

    if (modelArray.count == 0) {
        modelArray = [NSMutableArray arrayWithCapacity:1];
    }
    [modelArray insertObject:tip atIndex:0];
    BOOL saveSuccess = [NSKeyedArchiver archiveRootObject:modelArray toFile:filePath];
    if (saveSuccess) {
        NSLog(@"save status = %d",saveSuccess);
    }
}
  • 保存圖片到本地
/*
項(xiàng)目中的應(yīng)用場(chǎng)景是葱轩,本地視頻在顯示的時(shí)候需要顯示縮略圖,通過AVURLAsset等部分代碼獲取之后,將圖片保存到本地做一下緩存靴拱,下次搜索是否有圖片垃喊,有就直接加載
*/
//獲取路徑也是一樣的
NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
/*
拼接最后完整的路徑,這塊做的時(shí)候遇到個(gè)坑袜炕,記錄如下
拿到上述路徑之后本谜,下面部分代碼在于將最后文件的路徑補(bǔ)全,首先要加上‘/'這個(gè)分隔符,然后后面的是文件的名字,最后的效果如下,
/var/mobile/Containers/Data/Application/400BC47D-FBC5-412F-8F55-163E5FBB8264/Documents/thumImage2017_0818_101305_0028_F.jpg
-----之前這個(gè)沒有加'/’這個(gè)分隔符妇蛀,導(dǎo)致怎么保存之后都拿不到圖片
*/
UIImage *thumb = [[UIImage alloc] initWithCGImage:image];
NSString *imagePath = [path stringByAppendingString:[NSString stringWithFormat:@"/thumImage%@.jpg",[array firstObject]]];
[UIImagePNGRepresentation(thumb) writeToFile:imagePath atomically:YES];

如果是保存一些簡(jiǎn)單的信息的話耕突,一般NSUserDefaults用來保存數(shù)組笤成,字典什么的就可以了.

讀取

  • 讀取對(duì)象
//以上面plist保存為例评架,下面是讀取反歸檔
+ (NSMutableArray *)getSearchModel
{
//一般情況下,即便是沒保存的時(shí)候應(yīng)該需要先去讀取的炕泳,所以纵诞,最好判斷是文件的存在與否
    NSString *filePath = [self getDocumentPath];
    NSFileManager *fileM = [NSFileManager defaultManager];
    if (![fileM fileExistsAtPath:filePath]) {
        [fileM createFileAtPath:filePath contents:nil attributes:nil];
    }
    NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
    return array;
}
  • 讀取圖片
- (void)getImage:(NSString *)fileName
{
/*
讀取圖片其實(shí)就是保存的逆過程
1,在下面這個(gè)創(chuàng)建UIImage的方法中培遵,之前都是傳入文件的名字浙芙,而且我都是在工程里已經(jīng)有該圖片的時(shí)候才會(huì)使用這個(gè)方法,但是這次誤打誤撞之下傳入了我拿到的圖片文件的路徑籽腕,沒想到也可以顯示嗡呼。
2,本來該方法是配合獲取視頻的縮略圖然后要做緩存皇耗,imageNamed該方法系統(tǒng)會(huì)做緩存南窗,那么圖片只會(huì)加載一次,目前來看配合TableView還行郎楼,沒有嘗試大量數(shù)據(jù)
    UIImage *img = [UIImage imageNamed:imagePath];
*/
    NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    NSArray *array = [fileName componentsSeparatedByString:@"."];
    NSString *imagePath = [path stringByAppendingString:[NSString stringWithFormat:@"/thumImage%@.jpg",[array firstObject]]];
    UIImage *img = [UIImage imageNamed:imagePath];
}

刪除

  • 刪除文件
//以上面保存的圖片為例
- (void)deleteFileWith:(NSString *)fileName
{
/*
在通過文件的名字獲取到文件路徑之后万伤,通過NSFileManage來刪除某個(gè)路徑的文件
*/
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSArray *docuPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *localFilePath = [NSString stringWithFormat:@"%@/%@",[docuPaths lastObject],fileName];
    BOOL blHave=[[NSFileManager defaultManager] fileExistsAtPath:localFilePath];
    if (blHave) {
        BOOL blDele= [fileManager removeItemAtPath:localFilePath error:nil];
        if (blDele) {
            NSLog(@"dele success");
        }else {
            NSLog(@"dele fail");
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市呜袁,隨后出現(xiàn)的幾起案子敌买,更是在濱河造成了極大的恐慌,老刑警劉巖阶界,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虹钮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡膘融,警方通過查閱死者的電腦和手機(jī)芙粱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來托启,“玉大人宅倒,你說我怎么就攤上這事。” “怎么了拐迁?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵蹭劈,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我线召,道長(zhǎng)铺韧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任缓淹,我火速辦了婚禮哈打,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘讯壶。我一直安慰自己料仗,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布伏蚊。 她就那樣靜靜地躺著立轧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪躏吊。 梳的紋絲不亂的頭發(fā)上氛改,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音比伏,去河邊找鬼胜卤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赁项,可吹牛的內(nèi)容都是我干的葛躏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼肤舞,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼紫新!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起李剖,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤芒率,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后篙顺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體偶芍,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年德玫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匪蟀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宰僧,死狀恐怖材彪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤段化,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布嘁捷,位于F島的核電站,受9級(jí)特大地震影響显熏,放射性物質(zhì)發(fā)生泄漏雄嚣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一喘蟆、第九天 我趴在偏房一處隱蔽的房頂上張望缓升。 院中可真熱鬧,春花似錦蕴轨、人聲如沸港谊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽封锉。三九已至,卻和暖如春膘螟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碾局。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國打工荆残, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人净当。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓内斯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親像啼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俘闯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,128評(píng)論 29 470
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)忽冻,斷路器真朗,智...
    卡卡羅2017閱讀 134,626評(píng)論 18 139
  • 關(guān)于首選項(xiàng)和設(shè)置 首選項(xiàng)是您持久存儲(chǔ)的信息,并用于配置您的應(yīng)用程序僧诚。應(yīng)用程序通常會(huì)向用戶公開偏好設(shè)置遮婶,以便他們自定...
    nicedayCoco閱讀 989評(píng)論 0 0
  • 大雨如注 航路添堵 飛機(jī)總延誤 你也著急 他也著急 莫去怨天氣 天上龍行雨 急又何必 怒又何必 本為高興來 且去聽...
    瀚正閱讀 191評(píng)論 0 4
  • 十月初四旗扑,忌行葬動(dòng)土,宜遠(yuǎn)行慈省。 久未曾接到那個(gè)男人的消息了臀防,或者說像風(fēng)一樣的人總是難以捉摸,猛然間失去了那些刺激的...
    朝霧念念閱讀 492評(píng)論 0 0