




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】iOS開發(fā)-文件管理
一、iOS中的沙盒機制iOS應(yīng)用程序只能對自己創(chuàng)建的文件系統(tǒng)讀取文件,這個獨立、封閉、安全的空間,叫做沙盒。它一般存放著程序包文件(可執(zhí)行文件)、圖片、音頻、視頻、plist文件、sqlite數(shù)據(jù)庫以及其他文件。每個應(yīng)用程序都有自己的獨立的存儲空間(沙盒)一般來說應(yīng)用程序之間是不可以互相訪問模擬器沙盒的位置/User/userName/Library/ApplicationSupport/iPhoneSimulator當我們創(chuàng)建應(yīng)用程序時,在每個沙盒中含有三個文件,分別是Document、Library和temp。Document:一般需要持久的數(shù)據(jù)都放在此目錄中,可以在當中添加子文件夾,iTunes備份和恢復(fù)的時候,會包括此目錄。Library:設(shè)置程序的默認設(shè)置和其他狀態(tài)信息temp:創(chuàng)建臨時文件的目錄,當iOS設(shè)備重啟時,文件會被自動清除獲取沙盒目錄獲取程序的根目錄(home)目錄NSString*homePath
=NSHomeDirectory()獲取Document目錄NSArray
*paths
=NSSearchPathDorDirectoriesInDomains(NSDocumentDicrectory,,NSUserDomainMark,YES);
NSString*docPath
=
[pathslastObject];獲取Library目錄NSArray*paths
=NSSearchPathForDirectoriseInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
NSString*docPath
=
[pathslastObject];
獲取Library中的CacheNSArray*paths
=NSSearchPathForDirectoriseInDomains(NSCachesDirectory,NSUserDomainMask,YES);
NSString*docPath
=
[pathslastObject];獲取temp路徑NSString*temp
=NSTemporaryDirectory(
);二、NSString類路徑的處理方法文件路徑的處理NSString*path
=
@"/Uesrs/apple/testfile.txt"常用方法如下獲得組成此路徑的各個組成部分,結(jié)果:("/","User","apple","testfile.txt")-
(NSArray*)pathComponents;提取路徑的最后一個組成部分,結(jié)果:testfile.txt-
(NSString
*)lastPathComponent;刪除路徑的最后一個組成部分,結(jié)果:/Users/apple-
(NSString*)stringByDeletingLastPathCpmponent;將path添加到先郵路徑的末尾,結(jié)果:/Users/apple/testfile.txt/app.txt-
(NSString
*)stringByAppendingPathConmponent:(NSString
*)str;去路徑最后部分的擴展名,結(jié)果:text-
(NSString
*)pathExtension;刪除路徑最后部分的擴展名,結(jié)果:/Users/apple/testfile-
(NSString
*)stringByDeletingPathExtension;路徑最后部分追加擴展名,結(jié)果:/User/apple/testfile.txt.jpg-
(NSString
*)stringByAppendingPathExtension:(NSString
*)str;三、NSDataNSData是用來包裝數(shù)據(jù)的NSData存儲的是二進制數(shù)據(jù),屏蔽了數(shù)據(jù)之間的差異,文本、音頻、圖像等數(shù)據(jù)都可用NSData來存儲NSData的用法1.NSString與NSData互相轉(zhuǎn)換NSData->NSString
NSString*aString
=
[[NSStringalloc]initWithData:adataencoding:NSUTF8StringEncoding];NSString->NSData
NSString*aString
=
@"1234abcd";NSData*aData
=
[aStringdataUsingEncoding:NSUTF8StringEncoding];
將data類型的數(shù)據(jù),轉(zhuǎn)成UTF8的數(shù)據(jù)+(NSString*)dataToUTF8String:(NSData
*)data{NSString*buf
=
[[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding];return[bufautorelease];}將string轉(zhuǎn)換為指定編碼
+(NSString*)changeDataToEncodinString:(NSData
*)dataencodin:(NSStringEncoding)encodin{
NSString*buf
=
[[[NSStringalloc]initWithData:dataencoding:encodin]autorelease];
returnbuf;}2.NSData與UIImageNSData->UIImageUIImage*ap_w_picpath
=
[UIImagep_w_picpathWithData:p_w_picpathData];
//例:從本地文件沙盒中取圖片并轉(zhuǎn)換為NSDataNSString*path
=
[[NSBundlemainBundle]bundlePath];NSString*name
=
[NSStringstringWithFormat:@"ceshi.png"];NSString*finalPath
=
[pathstringByAppendingPathComponent:name];NSData*p_w_picpathData
=
[NSDatadataWithContentsOfFile:finalPath];UIImage*ap_w_picpath
=
[UIImagep_w_picpathWithData:p_w_picpathData];3.NSData與NSArray
NSDictionary+(NSString*)getLocalFilePath:(NSString
*)fileName{return[NSStringstringWithFormat:@"%@/%@%@",NSHomeDirectory(),@“Documents”,fileName];}包括將NSData寫進Documents目錄從Documents目錄讀取數(shù)據(jù)在進行網(wǎng)絡(luò)數(shù)據(jù)通信的時候,經(jīng)常會遇到NSData類型的數(shù)據(jù)。在該數(shù)據(jù)是dictionary結(jié)構(gòu)的情況下,系統(tǒng)沒有提供現(xiàn)成的轉(zhuǎn)換成NSDictionary的方法,為此可以通過Category對NSDictionary進行擴展,以支持從NSData到NSDictionary的轉(zhuǎn)換。聲明和實現(xiàn)如下:
+
(NSDictionary*)dictionaryWithContentsOfData:(NSData
*)data
{
CFPropertyListReflist=CFPropertyListCreateFromXMLData(kCFAllocatorDefault,
(CFDataRef)data,kCFPropertyListImmutable,NULL);
if(list==nil)returnnil;
if([(id)listisKindOfClass:[NSDictionaryclass]])
{
return[(NSDictionary
*)listautorelease];
}
else{
CFRelease(list);
returnnil;
}
}四、文件管理常用方法NSFileManager創(chuàng)建一個文件并寫入數(shù)據(jù)
-
(BOOL)createFileAtPath:(NSString*)pathcontents:(NSData*)dataattributes:(NSDictionary*)attr;從一個文件中讀取數(shù)據(jù)
-
(NSData
*)contentsAtPath:(NSString
*)path;scrPath路徑上的文件移動到dstPath路徑上,注意這里的路徑是文件路徑而不是目錄
-
(BOOL)moveItemAtPath:(NSString
*)srcPathtoPath:(NSString*)dstPatherror:(NSError**)error;scrPath路徑上的文件復(fù)制到dstPath路徑上
-
(BOOL)copyItemAtPath:(NSString*)scrPathtoPath:(NSString*)dstPatherror:(NSError**)error;比較兩個文件的內(nèi)容是否一樣
-
(BOOL)contentsEqualAtPath:(NSString*)path2andPath:(NSString*)path3;文件時候存在
-
(BOOL)fileExistsAtPath:(NSString
*)path;移除文件
-
(BOOL)removeItemAtPath:(NSString
*)patherror:(NSError**)error;創(chuàng)建文件管理NSFileManager*fileManager
=
[NSFileManagerdefaultManager];
NSString*path
=
[NSHomeDirectory(
)
stringByAppendingPathComponent:@"holyBible.txt"];
NSString*text
=
@"abcdefg";
將字符串轉(zhuǎn)成NSData類型
NSData*data
=
[textdataUsingEncoding:NSUTF8StringEncoding];
寫入文件
BOOLsuccess=
[fileManagercreateFileAtPath:pathcontents:dataattributes:nil];創(chuàng)建文件夾
NSString*filePath
=
[pathstringByAppendingPathComponent:@"holyBible.txt"];
NSString*contect
=
@"abcdefg";
BOOLsuccess=
[fmcreateFileAtPath:filePathcontents:[contentdataUsingEncoding:NSUTF8StringEncoding]attributes:nil];NSFileManager-讀取內(nèi)容
NSData*fileData
=
[fileManagercontentsAtPath:filePath];
NSString*content
=
[[NSStringalloc]initWithData:fileDatadataUsingEncoding:NSUTF8StringEncoding];NSData-讀取內(nèi)容
NSString*filePath
=
[pathstringByAppendingPathComponent:@"holyBible.txt"];
NSData*data
=
[NSDatadataWithContentOfFile:filePath];NSString-讀取內(nèi)容
NSString*filePath
=
[pathstringByAppendingPathComponent:@"holyBible.txt"];
NSString*content
=
[[NSStringstringWithContentsOfFile:filePathencoding:NSUTF8StringEncodingerror:nil];移動、復(fù)制文件
移動文件(重命名)
NSString*toPath
=
[NSHomeDirectory(
)stringByAppendingPathComponent:@"hellogod/NewTestament.txt"];
[fmcreateDirectoryAtPath:[toPathstringByDeletingLastPathComponent]withIntermediateDirectories:YESattributes:nilerror:nil];
NSError*error;
BOOLisSuccess=
[fmmoveItemAtPath:filePathtoPath:toPatherror:&error];復(fù)制文件(重命名)
NSString*copyPath
=
[NSHomeDirectory(
)stringByAppendingPathComponent:@"備份/OldTestament.txt"];
[fmcreateDirectoryAtPath:[toPathstringByDeletingLastPathComponent]withIntermediateDirectories:YESattributes:nilerror:nil];
BOOLsuccess=
[fmcopyItemAtPath:toPathtoPath:toPatherror:nil];刪除文件、獲取文件大小判斷文件是否存在和刪除文件
if([fmfileExistsAtPath])
{
if([fmremoveItemAtPath:copyPath])
{
NSLog(@"removesuccess");
}
}獲取文件大小
NSFileManager*fileManager
=
[NSFileManagerdefaultManager];
獲得文件的屬性字典
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度解除勞動合同經(jīng)濟補償及社會保險銜接協(xié)議
- 二零二五年度能源互聯(lián)網(wǎng)合同管理制度及智能調(diào)度流程
- 二零二五年度鐵路運輸安全責(zé)任協(xié)議書
- 2025年度汽車維修店汽車美容裝潢業(yè)務(wù)轉(zhuǎn)讓合同
- 2025年度美甲店轉(zhuǎn)讓合同含店鋪裝修升級及開業(yè)慶典策劃
- 《睡谷的傳說》THE LEGEND OF SLEEPY HOLLOW小說英文原版電子版
- 2025年杭州駕校考試貨運從業(yè)資格證考試題庫
- 2025年新余道路運輸從業(yè)資格證考試內(nèi)容是什么
- 感謝領(lǐng)導(dǎo)發(fā)言稿
- 2025年宣城道路運輸從業(yè)人員資格考試內(nèi)容有哪些
- 建筑擋煙垂壁設(shè)計圖集
- 排水管道施工組織設(shè)計排水管道施工組織設(shè)計排水施工排水管道施工施工設(shè)計
- 人工智能科普教育活動方案設(shè)計
- 第3課中古時期的西歐(教學(xué)課件)-【中職專用】《世界歷史》同步課堂(同課異構(gòu))(高教版2023?基礎(chǔ)模塊)
- 2024未來會議:AI與協(xié)作前沿趨勢白皮書
- 2024年廣東普通專升本《公共英語》完整版真題
- 建筑工程夜間施工方案
- 國家中長期科技發(fā)展規(guī)劃(2021-2035)
- 中國民族音樂的宮庭音樂
- 單原子催化劑的合成與應(yīng)用
- 水利工程施工驗收規(guī)范對工程監(jiān)理單位的要求
評論
0/150
提交評論