IOS之NSFileManager 和NSFileHandle

在現階手機app的臨時緩存文件漸漸增多,在app開發中對於移動設備文件的操作越來越多,我們IOS中對於文件的操作主要涉及兩個類NSFileManager 和NSFileHandle,下面我們就看看如何使用這兩個類:

1、文件創建


//初始化一個NSFileManager類defaultManager方法爲單例模式,通過單例模式進行初始化
        NSFileManager  * fileManager =[NSFileManager defaultManager];
        
        //拼接路徑
        NSString * path=NSHomeDirectory();
        path=[path stringByAppendingPathComponent:@"deskTop/date.txt"];
        
        //創建文件
        BOOL flag=[fileManager createFileAtPath:path contents:nil attributes:nil];
        if(flag){
            NSLog(@"文件創建成功");
        }else{
            NSLog(@"文件創建失敗");
        }

2、創建目錄


NSFileManager  * fileManager =[NSFileManager defaultManager];
        NSString * path=NSHomeDirectory();
        path=[path stringByAppendingPathComponent:@"deskTop/pro/cpp"];
        BOOL flag=[fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
        
        if(flag){
            NSLog(@"創建成功");
        }else{
            NSLog(@"創建失敗");
        }

3、刪除文件和目錄

 NSFileManager  * fileManager =[NSFileManager defaultManager];
        NSString * rootPath=NSHomeDirectory();
        NSString * dirPath=[rootPath stringByAppendingPathComponent:@"deskTop/newFolder"];
        
        NSArray * array=[fileManager contentsOfDirectoryAtPath:dirPath error:nil];
        for(NSString * str in array){
            
            NSString * newPath=[dirPath stringByAppendingPathComponent:str];
            BOOL flag=[fileManager removeItemAtPath:newPath error:nil];
            if(flag){
                NSLog(@"刪除成功");
            }else{
                NSLog(@"刪除失敗");
            }
        
        }


對於文件的操作有很多方法我們爲提及到,我們可以看下官方的API裏面有很多我們可能會用到的方法


 //將一個文件複製到另一個文件
 [fileManager copyItemAtPath:path1 toPath:path2 error:nil];
        
  //將一個文件移動到另一個文件
 [fileManager moveItemAtPath:path1 toPath:path2 error:nil];
  //獲取文件裏面的內容
 NSData * readData=[fileManager contentsAtPath:path]


  案例:我們這裏可以做一個例子如何計算一個文件裏面的所有行數,思路:我們首先需要讀取文件裏面的所有信息內容,統計行數我們只需要統計文件裏的換行符的個數即可,實例如下所示:


NSFileManager  * fileManager =[NSFileManager defaultManager];
        NSString * rootPath=NSHomeDirectory();
        NSString * dirPath=[rootPath stringByAppendingPathComponent:@"deskTop/newFolder/main.m"];
        
        NSData * data=[fileManager contentsAtPath:dirPath];
        NSString * str=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        
        int count=(int)[str componentsSeparatedByString:@"\n"].count;
        
        NSLog(@"當前的總行數爲%d",count);

4、文件寫入

在文件的讀寫操作過程中我們用的最多的是NSFileHandler,我們通過該類進行文件操作


   
//初始化一個用於寫入的文件句柄
        NSFileHandle * fileHandle=[NSFileHandle fileHandleForWritingAtPath:filePath];
  
        NSString * str=@"pppppppppppp";
        
       //將文件光標移動到文件的最後位置
        [fileHandle seekToEndOfFile];
        NSData * data=[str dataUsingEncoding:NSUTF8StringEncoding];
        
        //寫入數據
        [fileHandle writeData:data];
        
        //用完之後需要關掉
        [fileHandle closeFile];


5、文件的讀取


  
NSFileHandle * fileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath];
        //讀取到文件的末尾
        NSData * data= [fileHandle readDataToEndOfFile];
        //定位光標的位置
        [fileHandle seekToFileOffset:2];
        //查詢該文件可用數據的個數
        [fileHandle availableData];
        //讀取指定長度的文件
        NSData * data=[fileHandle readDataOfLength:3];
       NSString * str=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
        NSLog(@"%@",str);
//關閉句柄
       [fileHandle closeFile];

 

作者:傑瑞教育
出處:http://blog.csdn.net/jerehedu/
版權聲明:本文版權歸煙臺傑瑞教育科技有限公司和CSDN共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 
技術諮詢:JRedu技術交流
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章