iOS NSFileHandle常用操作,iosnsfilehandle
NSFileHandle 此類主要是對檔案內容進行讀取和寫入操作
NSFileMange 此類主要是對檔案進行的操作以及檔案資訊的擷取
常用處理方法
+ (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; 擷取當前檔案的位移量
- (void)seekToFileOffset:(unsigned long long)offset; 跳到指定檔案的位移量
- (unsigned long long)seekToEndOfFile; 跳到檔案末尾
- (void)truncateFileAtOffset:(unsigned long long)offset; 將檔案的長度設為offset位元組
- (void)closeFile; 關閉檔案
向檔案追加資料
NSString *homePath = NSHomeDirectory( );
NSString *sourcePath = [homePath stringByAppendingPathConmpone:@"testfile.text"];
NSFileHandle *fielHandle = [NSFileHandle fileHandleForUpdatingAtPath:sourcePath];
[fileHandle seekToEndOfFile]; 將節點跳到檔案的末尾
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]; 建立讀取源路徑檔案
if (infile == nil)
{
return NO;
}
outfile = [NSFileHandle fileHandleForReadingAtPath:outPath]; 建立病開啟要輸出的檔案
if (outfile == nil)
{
return NO;
}
[outfile truncateFileAtOffset:0]; 將輸出檔案的長度設為0
buffer = [infile readDataToEndOfFile]; 讀取資料
[outfile writeData:buffer]; 寫入輸入
[infile closeFile]; 關閉寫入、輸入檔案
[outfile closeFile];