OC 文件管理 NSFileManager NSFileHandle 歸檔和解檔

  //輸出文件路徑 跟目錄數組

    NSString *stringPath = NSHomeDirectory();app

    NSLog(@"%@",stringPath);測試

    

   //取出文件路徑的組成部分編碼

    NSLog(@"%@",[stringPath pathComponents]);atom

    //取出文件路徑的最後一個組成部分spa

    NSLog(@"%@",[stringPath lastPathComponent]);3d

    

    //給文件路徑追加一部分路徑code

    NSLog(@"%@",[stringPath stringByAppendingPathComponent:@"te.text"]);orm

    

  


    

    

    //-----------------------文件管理對象

    //建立一個文件管理 fileManager

    NSFileManager *fileManager = [NSFileManager defaultManager];

    

    //獲取當前路徑

    NSLog(@"當前路徑爲:%@",[fileManager currentDirectoryPath]);

    //建立文件內容 NSString類型

    NSString *fileString = @"listFlie";

    

    //將字符串類型轉換爲NSData類型 編碼格式爲NSUTF8

    NSData *fileData = [fileString dataUsingEncoding:NSUTF8StringEncoding];

    

    //建立文件  方法createFileAtPath 返回BOOL類型 if判斷

    if ([fileManager createFileAtPath:[stringPath stringByAppendingPathComponent:@"list.text"] contents:fileData attributes:nil]) {

        NSLog(@"文件建立成功");

    }

    

    //讀取文件 contentsAtPath: 返回NSData類型

    NSData *contentData = [fileManager contentsAtPath:[stringPath stringByAppendingPathComponent:@"list.text"]];

    //NSData類型轉轉換爲NSString類型

    NSString *contentString = [[NSString alloc]initWithData:contentData encoding:NSUTF8StringEncoding];

    //讀取文件內容

    NSLog(@"讀取文件內容 :%@",contentString);

    

    //複製文件

    [fileManager copyItemAtPath:[stringPath stringByAppendingPathComponent:@"list.text"] toPath: @"/Users/a11/desktop/test.txt" error:nil];

    

    //移動文件

    [fileManager moveItemAtPath:[stringPath stringByAppendingPathComponent:@"list.text"] toPath:@"/Users/a11/desktop/test.txt" error:nil];

    

    //刪除文件

    [fileManager removeItemAtPath:@"/Users/a11/desktop/test.txt" error:nil];

    

   //建立文件目錄 也就是建立文件夾

   if ([fileManager createDirectoryAtPath:[stringPath stringByAppendingPathComponent:@"newFile.text"] withIntermediateDirectories:YES attributes:nil error:nil])

    {

        NSLog(@"文件目錄建立成功");

    }

   

    //讀取文件目錄的內容

    [fileManager contentsOfDirectoryAtPath:[stringPath stringByAppendingPathComponent:@"newFile.text"] error:nil];

    

    //--------NSFileHandle-------

    //建立一個NSFileHandle

    NSFileHandle *fileHandle = nil;

    

    //指定要操做文件的路徑 更新

    fileHandle=[NSFileHandle fileHandleForWritingAtPath :@"/Users/a11/Desktop/we.txt"];

    

    //指定光標在文件內容末尾

    [fileHandle seekToEndOfFile];

    

    //建立須要修改的內容

    NSString *appendString = @"楊茹";

    

    //轉換成數據流格式

    NSData *appendData = [appendString dataUsingEncoding:NSUTF8StringEncoding];

    

    //寫入到文件中

    [fileHandle writeData:appendData];

    

    //關閉文件

    [fileHandle closeFile];



 //--------歸檔-------

    //建立一個可變數據流

    NSMutableData *mutableData = [[NSMutableData alloc]init];

    

    //把用歸檔格式的數據傳值給可變大小的文件流

    NSKeyedArchiver *archiever = [[NSKeyedArchiver alloc]initForWritingWithMutableData:mutableData];

    

    //把集合數據以歸檔形式編碼 鍵只能是NSString類型 Objectid類型

    [archiever encodeObject:@"80"forKey:@"age"];

    [archiever encodeObject:@"jack"forKey:@"name"];

    

    //完成歸檔

    [archiever finishEncoding];

    

    //把歸檔過來的可變大小的數據流寫入文件中 永久存儲

    [mutableData writeToFile:@"/Users/a11/Desktop/we.txt" atomically:YES];

    

    

    //--------解檔-------

    //建立一個NSFileManager類型的對象

    NSFileManager *fileManager = [NSFileManager defaultManager];

    //NSData文件流接受從PATH路徑讀取出來的文件內容

    NSData *data = [fileManager contentsAtPath:@"/Users/a11/Desktop/we.txt"];

    

    //實例化一個解檔對象 注意:初始化爲解檔格式並要放入要解檔的數據流

    NSKeyedUnarchiver *unArchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data];

    

    //輸入要解檔的Key  返回的時數組類型

    NSArray *arrayUnArchiver = [unArchiver decodeObjectForKey:@"age"];

    

    NSLog(@"arrayUnArchiver:%@",arrayUnArchiver);


其餘一些文件操做的方法:

NSFileManager 常⽤用⽂文件操做⽅方法

-(BOOL)contentsAtPath:path 從⽂文件中讀取數據

-(BOOL)createFileAtPath:path contents:(BOOL)data attributes:向一個文件寫⼊入數據

-(BOOL)removeFileAtPath: path handler: handler 刪除⼀一個⽂文件

-(BOOL)movePath: from toPath: to handler: handler 重命名或移動⼀一個⽂文件(to可能已經存在)

-(BOOL)copyPath:from toPath:to handler: handler 複製⽂文件 (to不能 在)

-(BOOL)contentsEqualAtPath:path1 andPath:path2 ⽐比較兩個⽂文件的內容

-(BOOL)fileExistsAtPath:path 測試⽂文件是否存在

-(BOOL)isReadablefileAtPath:path 測試⽂文件是否存在,且是否能執⾏行讀操做

-(BOOL)isWritablefileAtPath:path 測試⽂文件是否存在,且是否能執⾏行寫操做

-(NSDictionary *)fileAttributesAtPath:path traverseLink:(BOOL)flag 獲取⽂文件的屬性

-(BOOL)changeFileAttributes:attr atPath:path 更改⽂文件的屬性 

(NSString *)currentDirectoryPath 獲取當前目錄

-(BOOL)changeCurrentDirectoryPath:path 更改當前目錄

-(BOOL)copyPath:from toPath:to handler:handler 複製目錄結構,to不能已經存在

-(BOOL)createDirectoryAtPath:path attributes:attr 建立目錄

-(BOOL)fileExistsAtPath:path isDirectory:(BOOL *)flag 測試⽂文件是否爲目錄 (flag存儲結構yes/no)

-(NSArray *)contentsOfDirectoryAtPath:path 列出目錄的內容

-(NSDirectoryEnumerator *)enumeratorAtPath:path 枚舉目錄的內容

-(BOOL)removeFileAtPath:path handler:handler 刪除空目錄

-(BOOL)movePath:from toPath:to handler:handler 重命名或移動⼀個目錄,to不能是已經存在的 


常⽤用NSFileHandle⽅方法

(NSFileHandle *)fileHandleForReadingAtPath:path 打開一個文件準備讀取

(NSFileHandle *)fileHandleForWritingAtPath:path 打開一個文件準備寫入

(NSFileHandle *)fileHandleForUpdatingAtPath:path 打開一個文件準備更新(讀取和寫⼊)

-(NSData *)availableData 從設備或通道返回可用數據

-(NSData *)readDataToEndOfFile 讀取其他的數據直到文件末尾(最多UINT_MAX字節) 

-(NSData *)readDataOfLength:(unsigned int)bytes 從⽂件讀取指定數目bytes的內容

-(void)writeData:data data寫⼊文件

-(unsigned long long) offsetInFile 獲取當前⽂件的偏移量

-(void)seekToFileOffset:offset 設置當前⽂件的偏移量

-(unsigned long long) seekToEndOfFile 將當前⽂件的偏移量定位的⽂件末尾

-(void)truncateFileAtOffset:offset 將⽂件的長度設置爲offset字節

-(void)closeFile 關閉文件 

相關文章
相關標籤/搜索