NSFileHandle
NSFileManager類主要對於文件的操作(刪除,修改,移動,賦值等等)
NSFileHandle類主要對文件的內容進行讀取和寫入操作
NSFileHandle處理文件的步驟
1:創建一個NSFileHandle對象
2:對打開的文件進行I/O操作
3:關閉文件對象操作
常用處理方法
+ (id)fileHandleForReadingAtPath:(NSString *)path; //打開一個文件准備讀取 + (id)fileHandleForWritingAtPath:(NSString *)path; //打開一個文件准備寫入 + (id)fileHandleForUpdatingAtPath:(NSString *)path; //打開一個文件可以更新(讀取,寫入) - (NSData *)availableData; //返回可用的數據 - (NSData *)readDataToEndOfFile; //從當前的節點位置讀取到文件末尾 - (NSData *)readDataOfLength:(NSUInteger)length; //從當前的節點位置開始讀取指定長度的數據 - (void)writeData:(NSData *)data; //寫入數據 - (unsigned long long)offsetInFile; //獲取當前文件的偏移量 - (unsigned long long)seekToEndOfFile; //跳轉到文件結尾 - (void)seekToFileOffset:(unsigned long long)offset; //跳轉到指定文件的指定的偏移量的位置 - (void)truncateFileAtOffset:(unsigned long long)offset; //設置文件長度 - (void)synchronizeFile; //文件同步 - (void)closeFile; //關閉文件
實例代碼
1(對文件進行加入數據:):
@autoreleasepool {
NSString *homePath=NSHomeDirectory();
NSLog(@"%@",homePath);
NSString *filePath=[homePath stringByAppendingFormat:@"/Desktop/testfile"];
NSLog(@"%@",filePath);
NSFileHandle *fileHandle=[NSFileHandle fileHandleForUpdatingAtPath:filePath];
[fileHandle seekToEndOfFile];
NSString *str=@"測試加入的數據為";
NSData *data=[str dataUsingEncoding:NSUTF8StringEncoding];
[fileHandle writeData:data];
[fileHandle closeFile];
}
return 0;

2:對文件中的數據進行定位:
NSString *homePath=NSHomeDirectory();
NSString *filePath=[homePath stringByAppendingFormat:@"/Desktop/testfile"];
NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath];
NSUInteger length= [fileHandle availableData].length;
[fileHandle seekToFileOffset:length/2];
NSData *data=[fileHandle readDataToEndOfFile];
NSString *str=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
[特別講一下NSData類的一些方法]
3:復制文件中的數據
//復制文件 NSString *homePath=NSHomeDirectory(); NSString *filePath=[homePath stringByAppendingFormat:@"/Desktop/testfile"]; //NSFileHandle *fileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath]; NSString *targetPath=[homePath stringByAppendingFormat:@"/Desktop/outfile"]; NSFileManager *fileManager=[NSFileManager defaultManager]; BOOL result=[fileManager createFileAtPath:targetPath contents:nil attributes:nil]; if(result){ NSLog(@"create success!"); } NSFileHandle *inFileHandle=[NSFileHandle fileHandleForReadingAtPath:filePath]; NSFileHandle *outFileHandle=[NSFileHandle fileHandleForWritingAtPath:targetPath]; NSData *inData=[inFileHandle availableData]; //讀出文件中所有的數據 //下面開始進行寫文件 [outFileHandle writeData:inData]; [inFileHandle closeFile]; [outFileHandle closeFile];