對NSFileHandle 的用法一直不熟練, 無意間找到的詳細介紹,留底方便使用
NSFileHandle ?此類主要是對文件內容進行讀取和寫入操作
NSFileMange ? 此類主要是對文件進行的操作以及文件信息的獲取
常用處理方法
+?(id)fileHandleForReadingAtPath:(NSString *)path??打開一個文件準備讀取
+?(id)fileHandleForWritingAtPath:(NSString?*)path??打開一個文件準備寫入
+?(id)fileHandleForUpdatingAtPath:(NSString?*)path??打開一個文件準備更新
-??(NSData?*)availableData;?從設備或通道返回可用的數據
-??(NSData?*)readDataToEndOfFile;?從當前的節(jié)點讀取到文件的末尾
-??(NSData?*)readDataOfLength:(NSUInteger)length;?從當前節(jié)點開始讀取指定的長度數據
-??(void)writeData:(NSData?*)data;?寫入數據
-??(unsigned long long)offsetInFile;??獲取當前文件的偏移量
-??(void)seekToFileOffset:(unsigned long long)offset;?跳到指定文件的偏移量
-??(unsigned long long)seekToEndOfFile;?跳到文件末尾
-??(void)truncateFileAtOffset:(unsigned long long)offset;?將文件的長度設為offset字節(jié)
-??(void)closeFile;??關閉文件
向文件追加數據
NSString *homePath??= NSHomeDirectory(?);
NSString *sourcePath?=?[homePath stringByAppendingPathConmpone:@"testfile.text"];
NSFileHandle *fielHandle?=?[NSFileHandle fileHandleForUpdatingAtPath:sourcePath];
[fileHandle seekToEndOfFile];??將節(jié)點跳到文件的末尾
NSString *str?=?@"追加的數據"
NSData* stringData ?=?[str dataUsingEncoding:NSUTF8StringEncoding];
[fileHandle writeData:stringData];?追加寫入數據
[fileHandle closeFile];
定位數據
NSFileManager *fm?=?[NSFileManager defaultManager];
NSString *content?=?@"abcdef";
[fm createFileAtPath:path contents:[content dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
NSFileHandle *fileHandle?=?[NSFileHandle fileHandleForReadingAtPath:path];
NSUInteger length =?[fileHandle availabelData] length];?獲取數據長度
[fileHandle seekToFileOffset;length/2];?偏移量文件的一半
NSData *data?=?[fileHandle readDataToEndOfFile];
[fileHandle closeFile];
復制文件
NSFileHandle *infile,?*outfile;?輸入文件、輸出文件
NSData?*buffer;?讀取的緩沖數據
NSFileManager?*fileManager?=?[NSFileManager defaultManager];
NSString *homePath?= NSHomeDirectory(?);
NSString *sourcePath?=?[homePath stringByAppendingPathComponent:@"testfile.txt"];??源文件路徑
NSString *outPath?=?[homePath stringByAppendingPathComponent:@"outfile.txt"];?輸出文件路徑
BOOL sucess ?=?[fileManager createFileAtPath:outPath contents:nil attributes:nil];
if (!success)
{
return N0;
}
infile =?[NSFileHandle fileHandleForReadingAtPath:sourcePath];?創(chuàng)建讀取源路徑文件
if (infile?== nil)
{
return NO;
}
outfile =?[NSFileHandle fileHandleForReadingAtPath:outPath];?創(chuàng)建病打開要輸出的文件
if (outfile?== nil)
{
return NO;
}
[outfile truncateFileAtOffset:0];?將輸出文件的長度設為0
buffer?=?[infile readDataToEndOfFile];??讀取數據
[outfile writeData:buffer];??寫入輸入
[infile closeFile];????????關閉寫入、輸入文件
[outfile closeFile];