NSFileManager文件管理

前提,用到的東東:
一、文件數據類:NSData類型(二進制)
1)做用:專門用於將數據封裝成二進制的類。數據(文本,圖片,音頻,視頻....)  ==> NSData類型的對象
2)編碼方式:使用UTF8國際通用編碼
     encoding:NSUTF8StringEncoding
3)NSString與NSData相互轉換
NSString *contents = @"我是要保存到文件中去的內容,哈哈";
//將NSString轉換成NSData類型
NSData *data = [contents dataUsingEncoding:NSUTF8StringEncoding];
//將NSData轉換成NSString,
NSString *contents2 = [[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];
 
atomically:原子性
 
二、NSURL類型:
必須以協議頭(http://,ftp://,file://)
能夠建立目錄,不能建立文件
1) 什麼是URL
URL  :  統一資源定位符(Uniform Resource Locator)
在互聯網上能夠惟一的定位一個資源(文件,音樂,圖片..)
http://www.tarena.com.cn/index.html
在計算中也能夠使用URL來定位一個資源
file:///Users/tarena/Desktop/my.txt
//將字符串轉換成NSURL類型
NSURL *url2 = [NSURL URLWithString:Str];
//獲取到數據
NSData *htmlData = [NSData dataWithContentsOfURL:url2];
 
2) 和PATH的區別:
         URL必須經訪問協議開頭(http://, ftp://, file://…), 是NSURL類型的對象
PATH沒有協議, 是字符串對象
 
三、NSError類型
用於獲取錯誤信息
    NSError *error = nil;
    NSLog(@"簡潔寫入文件失敗:%@", error.userInfo);
四、文件操做:建立、寫入文本、讀取文本、移動、複製、刪除文件
 
 五、類NSFileManager
獲取文件屬性: attributesOfItemAtPath,返回字典
 
判斷是否存在: fileExistsAtPath
 建立+寫入文件:createFileAtPath
讀取字:contentsAtPath
 
使用NSString讀寫文本
寫入文件:writeToFile
讀取:stringWithContentsOfFile
 
建立文件夾:createDirectoryAtPath
 刪除文件:removeItemAtPath
複製:copyItemAtPath
 
NSFileManager *manager = [NSFileManager defaultManager];
    //建立文件
BOOL flage = [manager createFileAtPath:@"/Users/tarena/Desktop/my.txt" contents:nil attributes:nil];
    if (flage) {
        NSLog(@"文件建立成功!");
    }else{
        NSLog(@"文件建立失敗!");
    }
    //建立文件的同時給文件寫入內容
    NSString *contents = @"我是要保存到文件中去的內容,哈哈";
    //NSString ==> NSData
    NSData *data = [contents dataUsingEncoding:NSUTF8StringEncoding];
    //建立並寫入內容
    flage = [manager createFileAtPath:@"/Users/tarena/Desktop/my2.txt" contents:data attributes:nil];
    //字符串的簡潔寫入文件方法
    NSError *error = nil;
    flage= [contents writeToFile:@"/Users/tarena/Desktop/my3.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
    //從文件中讀取內容
    NSData *data2 = [manager contentsAtPath:@"/Users/tarena/Desktop/my3.txt"];
    //NSData ==> NSString
    NSString *contents2 = [[NSString alloc]initWithData:data2 encoding:NSUTF8StringEncoding];
    NSLog(@"從文件中讀到的內容是:%@", contents2);
    //從文件中讀取字符串內容的簡潔方法
    NSString *contents3 = [NSString stringWithContentsOfFile:@"/Users/tarena/Desktop/my3.txt" encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"直接從文件中讀字符串:%@", contents3);
    //刪除文件
    error = nil;
    res = [manager removeItemAtPath:@"/Users/tarena/Desktop/my.txt" error:&error];
    if(!res){
        NSLog(@"刪除失敗:%@", error.userInfo);
    }
    //判斷目錄是否存在
    NSString *path = @"/Users/tarena/Desktop/files";
     flage= [[NSFileManager defaultManager]fileExistsAtPath:path];
//拷貝文件,若是目標已經存在,由拷貝失敗
    NSString *sourcePath = @"/Users/tarena/Desktop/app.txt";
    NSString *targetPath = @"/Users/tarena/Desktop/app2.txt";
    if(![manager copyItemAtPath:sourcePath toPath:targetPath error:nil]){
        NSLog(@"拷貝失敗!");
    }
 
//使用URL來操做文件或目錄
    //建立一個目錄
    NSURL *url = [NSURL URLWithString:@"file:///Users/tarena/Desktop/urldir"];
    if (![manager createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:nil]){
        NSLog(@"使用URL建立目錄失敗!");
    }
    //使用path來將一個文件的二進制數據讀入到NSData(假設這個文件是圖片,或視頻等,就不能讀成字符串)
    NSData *data = [NSData dataWithContentsOfFile:@"/Users/tarena/Desktop/app.txt"];
    NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"%@", str);
    //使用URL將一個文件的二進制數據讀入內存中(使用NSData對象來封裝)
    NSString *urlStr = @" http://tmooc.cn/web/library/library.html";
//將字符串轉換成NSURL類型
    NSURL *url2 = [NSURL URLWithString:urlStr];
//獲取到數據
    NSData *htmlData = [NSData dataWithContentsOfURL:url2];
//將數據轉換成NSString類型
    NSString *htmlStr = [[NSString alloc]initWithData:htmlData encoding:NSUTF8StringEncoding];
    NSLog(@"%@", htmlStr);
 
//獲取文件屬性
NSString *path=[self.documentPath stringByAppendingPathComponent:@"hello.txt"];
NSDictionary *dic=[[NSFileManager defaultManager]attributesOfItemAtPath:path error:nil];
NSLog(@"%@",[dic description]);//輸出文件的屬性內容
NSUInteger fileSize=[dic[NSFileSize]integerValue];//文件大小是覺得字節單位
NSLog(@"文件大小:%lu",(unsigned long)fileSize);
相關文章
相關標籤/搜索