//輸出文件路徑 跟目錄數組
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類型 Object是id類型
[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 關閉文件