日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

iOS开发-文件管理之多的是你不知道的事(一)

發布時間:2023/12/13 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 iOS开发-文件管理之多的是你不知道的事(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

郝萌主傾心貢獻。尊重作者的勞動成果,請勿轉載。

假設文章對您有所幫助,歡迎給作者捐贈,支持郝萌主,捐贈數額任意,重在心意^_^

我要捐贈:點擊捐贈

Cocos2d-X源代碼下載:點我傳送

游戲官方下載:http://dwz.cn/RwTjl

游戲視頻預覽:http://dwz.cn/RzHHd

游戲開發博客:http://dwz.cn/RzJzI

游戲源代碼傳送:http://dwz.cn/Nret1

一、iOS中的沙盒機制

iOS應用程序僅僅能對自己創建的文件系統讀取文件,這個獨立、封閉、安全的空間,叫做沙盒。

它一般存放著程序包文件(可運行文件)、圖片、音頻、視頻、plist文件、sqlite數據庫以及其它文件。

每一個應用程序都有自己的獨立的存儲空間(沙盒)

一般來說應用程序之間是不能夠互相訪問

模擬器沙盒的位置

/User/userName/Library/Application Support/iPhone Simulator

當我們創建應用程序時,在每一個沙盒中含有三個文件,各自是Document、Library和temp。

Document:一般須要持久的數據都放在此文件夾中,能夠在其中加入子文件夾。iTunes備份和恢復的時候,會包含此文件夾。

Library:設置程序的默認設置和其它狀態信息

temp:創建暫時文件的文件夾,當iOS設備重新啟動時,文件會被自己主動清除


獲取沙盒文件夾

獲取程序的根文件夾(home)文件夾

NSString *homePath= NSHomeDirectory()

獲取Document文件夾

NSArray *paths= NSSearchPathDorDirectoriesInDomains(NSDocumentDicrectory,NSUserDomainMark,YES);

NSString *docPath=[paths lastObject];

獲取Library文件夾

NSArray *paths=

NSSearchPathForDirectoriseInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

NSString *docPath=[paths lastObject];

獲取Library中的Cache

NSArray *paths=

NSSearchPathForDirectoriseInDomains(NSCachesDirectory, NSUserDomainMask,YES);

NSString *docPath=[paths lastObject];

獲取temp路徑

NSString *temp= NSTemporaryDirectory();


二、NSString類路徑的處理方法

文件路徑的處理

NSString *path=@"/Uesrs/apple/testfile.txt"

經常用法例如以下

獲得組成此路徑的各個組成部分。結果:("/","User","apple","testfile.txt")

-(NSArray *)pathComponents;

提取路徑的最后一個組成部分。結果:testfile.txt

-(NSString*)lastPathComponent;

刪除路徑的最后一個組成部分,結果:/Users/apple

-(NSString *)stringByDeletingLastPathCpmponent;

將path加入到先郵路徑的末尾,結果:/Users/apple/testfile.txt/app.txt

-(NSString*)stringByAppendingPathConmponent:(NSString*)str;

去路徑最后部分的擴展名。結果:text

-(NSString*)pathExtension;

刪除路徑最后部分的擴展名,結果:/Users/apple/testfile

-(NSString*)stringByDeletingPathExtension;

路徑最后部分追加擴展名,結果:/User/apple/testfile.txt.jpg

-(NSString*)stringByAppendingPathExtension:(NSString*)str;


三、NSData

NSData是用來包裝數據的

NSData存儲的是二進制數據,屏蔽了數據之間的差異。文本、音頻、圖像等數據都可用NSData來存儲

NSData的用法

1.NSString與NSData互相轉換

NSData-> NSString

NSString *aString=[[NSString alloc] initWithData:adataencoding:NSUTF8StringEncoding];

NSString->NSData

NSString *aString=@"1234abcd";
NSData *aData=[aString dataUsingEncoding: NSUTF8StringEncoding];

將data類型的數據,轉成UTF8的數據

+(NSString *)dataToUTF8String:(NSData*)data
{
NSString *buf=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return [buf autorelease];
}

將string轉換為指定編碼
+(NSString *)changeDataToEncodinString:(NSData*)data encodin:(NSStringEncoding )encodin{
NSString *buf=[[[NSString alloc] initWithData:data encoding:encodin] autorelease];
return buf;
}

2. NSData 與 UIImage
NSData->UIImage
UIImage *aimage=[UIImage imageWithData: imageData];

//例:從本地文件沙盒中取圖片并轉換為NSData
NSString *path=[[NSBundle mainBundle] bundlePath];
NSString *name=[NSString stringWithFormat:@"ceshi.png"];
NSString *finalPath=[path stringByAppendingPathComponent:name];
NSData *imageData=[NSData dataWithContentsOfFile: finalPath];
UIImage *aimage=[UIImage imageWithData: imageData];

3.NSData與NSArray NSDictionary

+(NSString *)getLocalFilePath:(NSString*) fileName
{
return [NSString stringWithFormat:@"%@/%@%@", NSHomeDirectory(),@“Documents”,fileName];
}

包含將NSData寫進Documents文件夾
從Documents文件夾讀取數據
在進行網絡數據通信的時候。經常會遇到NSData類型的數據。

在該數據是dictionary結構的情況下,系統沒有提供現成的轉換成NSDictionary的方法,

為此能夠通過Category對NSDictionary進行擴展。以支持從NSData到NSDictionary的轉換。

聲明和實現例如以下:

+(NSDictionary *)dictionaryWithContentsOfData:(NSData*)data{
CFPropertyListRef list = CFPropertyListCreateFromXMLData(kCFAllocatorDefault,(CFDataRef)data, kCFPropertyListImmutable, NULL);
if(list == nil) return nil;
if ([(id)list isKindOfClass:[NSDictionary class]]){
return [(NSDictionary*)list autorelease];
}
else {
CFRelease(list);
return nil;
}
}


四、文件管理經常用法

NSFileManager

創建一個文件并寫入數據

-(BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;

從一個文件里讀取數據

-(NSData*)contentsAtPath:(NSString*)path;

scrPath路徑上的文件移動到dstPath路徑上。注意這里的路徑是文件路徑而不是文件夾

-(BOOL)moveItemAtPath:(NSString*)srcPath toPath:(NSString *)dstPath error:(NSError **) error;

scrPath路徑上的文件拷貝到dstPath路徑上

-(BOOL)copyItemAtPath:(NSString *)scrPath toPath:(NSString *)dstPath error:(NSError **) error;

比較兩個文件的內容是否一樣

-(BOOL)contentsEqualAtPath:(NSString *)path1 andPath:(NSString *)path2;

文件時候存在

-(BOOL)fileExistsAtPath:(NSString*)path;

移除文件

-(BOOL)removeItemAtPath:(NSString*)path error:(NSError **) error;


創建文件管理

NSFileManager *fileManager=[NSFileManager defaultManager];

NSString *path=

[NSHomeDirectory() stringByAppendingPathComponent:@"holyBible.txt"];

NSString *text=@"abcdefg";

將字符串轉成NSData類型

NSData *data=[text dataUsingEncoding: NSUTF8StringEncoding];

寫入文件

BOOL success =[fileManager createFileAtPath:path contents:data attributes:nil];


創建文件夾

NSString *filePath=[path stringByAppendingPathComponent:@"holyBible.txt"];

NSString *contect=@"abcdefg";

BOOL success =[fm createFileAtPath:filePath contents:[content dataUsingEncoding: NSUTF8StringEncoding] attributes:nil];


NSFileManager-讀取內容

NSData *fileData=[fileManager contentsAtPath:filePath];

NSString *content=[[NSString alloc] initWithData:fileData dataUsingEncoding: NSUTF8StringEncoding];

NSData-讀取內容

NSString *filePath=[path stringByAppendingPathComponent:@"holyBible.txt"];

NSData *data=[NSData dataWithContentOfFile:filePath];

NSString-讀取內容

NSString *filePath=[path stringByAppendingPathComponent:@"holyBible.txt"];

NSString *content=[[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];

移動、拷貝文件

移動文件(重命名)

NSString *toPath=

[NSHomeDirectory() stringByAppendingPathComponent:@"hellogod/New Testament.txt"];

[fm createDirectoryAtPath:[toPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];

NSError *error;

BOOL isSuccess =[fm moveItemAtPath:filePath toPath:toPath error:&error];

拷貝文件(重命名)

NSString *copyPath=

[NSHomeDirectory() stringByAppendingPathComponent:@"備份/Old Testament.txt"];

[fm createDirectoryAtPath:[toPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];

BOOL success =[fm copyItemAtPath:toPath toPath:toPath error:nil];

刪除文件、獲取文件大小

推斷文件是否存在和刪除文件

if([fm fileExistsAtPath])

{

if ([fm removeItemAtPath:copyPath])

{

NSLog(@"remove success");

}

}

獲取文件大小

NSFileManager *fileManager=[NSFileManager defaultManager];

獲得文件的屬性字典

NSDictionary *attrDic=[fileManager attributesOfItemAtpath:sourcePath error:nil];

NSNumber *fileSize=[attrDic objectForKey:NSFileSize];

獲取文件夾文件信息

NSFileManager *fileManager=[NSFileManager defaultManager];

NSString *enuPath=

[NSHomeDirectoty() stringByAppendingPathComponent:@"Test"]; NSDictionaryEnumerator *dirEnum=[fileManager enumeratorAtPath:enuPath];

NSString *path= nil;

while ((path=[dirEnum nextObject]}!= nil)

{ NSLog(@"%@",path);

}


郝萌主傾心貢獻,尊重作者的勞動成果。請勿轉載。

假設文章對您有所幫助。歡迎給作者捐贈。支持郝萌主,捐贈數額任意。重在心意^_^

我要捐贈:點擊捐贈

Cocos2d-X源代碼下載:點我傳送

游戲官方下載:http://dwz.cn/RwTjl

游戲視頻預覽:http://dwz.cn/RzHHd

游戲開發博客:http://dwz.cn/RzJzI

游戲源代碼傳送:http://dwz.cn/Nret1

總結

以上是生活随笔為你收集整理的iOS开发-文件管理之多的是你不知道的事(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。