6月19日 NSFileHandle文件类的常用方法
?
?NSFileManager類主要對(duì)文件的操作(刪除,修改,移動(dòng),復(fù)制等);
?
?NSFileHandle類主要對(duì)文件內(nèi)容進(jìn)行讀取和寫入操作
?
?NSFileHandle處理文件的步驟
?
?1.? ? ? 創(chuàng)建一個(gè)NSFileHandle對(duì)象
?
?2.? ? ? 對(duì)打開的文件進(jìn)行I/O操作
?
?3.? ? ? 關(guān)閉文件
?
?可以使用NSFileHandle做文件的斷點(diǎn)續(xù)傳
?
?
?
?(一)? 常用方法
?
?//創(chuàng)建方法
?
?+(id)fileHandleForReadingAtPath:(NSString *)path;//打開一個(gè)文件準(zhǔn)備讀取
?
?+(id)fileHandleForWritingAtPath:(NSString*)path;//打開一個(gè)文件準(zhǔn)備寫入
?
?+(id)fileHandleForUpdatingAtPath:(NSString*)path;//打開一個(gè)文件準(zhǔn)備更新(讀取,更新)
?
?
?
?-(NSData *)availableData;//從設(shè)備或通道返回可用的數(shù)據(jù)
?
?-(NSData *)readDataToEndOfFile;//從當(dāng)前的節(jié)點(diǎn)讀取到文件末尾
?
?-(NSData *)readDataOfLength:(NSUInteger)length;//從當(dāng)前節(jié)點(diǎn)開始讀取指定的長(zhǎng)度數(shù)據(jù)
?
?-(void)writeData:(NSData *)data;//寫入數(shù)據(jù)
?
?-(unsigned long long)offsetInFile://獲取當(dāng)前文件的偏移量
?
?-(unsigned long long)seekToEndOfFile;//跳到文件尾
?
?-(void)truncateFileAtOffset:(unsigned longlong)offset;//將文件的長(zhǎng)度設(shè)置為offset字節(jié)
?
?-(void)closeFile;//關(guān)閉文件
?
?
?
?(二)
?
?//追加數(shù)據(jù)
?
?NSString *homePath = NSHomeDirectory();
?
?NSString *sourcePath = [homePathstringByAppendingPathComponent:@”需要追加數(shù)據(jù)的文件路徑”];
?
?NSFileHandle *fileHandle = [NSFileHandlefileHandleForUpdatingAtPath:sourcePath];
?
?//將節(jié)點(diǎn)跳到文件末尾
?
?[fileHandle seekToEndOfFile];
?
?NSString *str = @”追加的數(shù)據(jù)”;
?
?NSData *stringData = [strdataUsingEncoding:NSUTF8StringEncoding];
?
?//追加寫入數(shù)據(jù)
?
?[fileHandle writeData:stringData];
?
?[fielHandle closeFile];
?
?
?
?//定位數(shù)據(jù)
?
?NSFileManager *fm = [NSFileManagerdefaultManager];
?
?NSString *content = @”abcdefghijklmn”;
?
?[fm createFileAtPath:path contents:[contentdataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
?
?NSFileHandle *fileHandle = [NSFileHandlefileHandleForReadingAtPath:path];
?
?//獲取數(shù)據(jù)長(zhǎng)度
?
?NSUInteger length = [[fileHandleavailableData] length];
?
?//偏移量但文件的一半
?
?[fileHandle seekToFileOffset:length/2];
?
?//從一半開始將數(shù)據(jù)湊到文件最后
?
?NSData *data = [fileHandlereadDataToEndOfFile];
?
?[fileHandle closeFiel];
?
?
?
?//復(fù)制文件
?
?NSFileHandle *infile, *outfile;//輸入文件,輸出文件
?
?NSData *buffer;//讀取的緩沖數(shù)據(jù)
?
?NSFileManager *fileManager = [NSFileManagerdefaultManager];
?
?NSString *homePath = NSHomeDirectory();
?
?//源文件路徑
?
?NSString *sourcePath = [homePathstringByAppendingPathComponent:@”testfile.text”];
?
?//輸出文件路徑
?
?NSString *outPath = [homePathstringByAppendingPathComponent:@”outfile.text”];
?
?//創(chuàng)建輸出文件
?
?BOOL success = [fileManagercreateFileAtPath:outPath content:nil attributes:nil];
?
?If (!success){
?
?returnNO;
?
?}
?
?outfile = [NSFileHandlefileHandleForWritingAtPath:outPath];
?
?infile = [NSFileHandlefileHandleForReadingAtPath:sourcePath];
?
?//讀取源文件內(nèi)容
?
?NSData *data = [infile readDataToEndOfFile];
?
?//寫入內(nèi)容
?
?[outfile writeData:data];
?
?[oufile closeFile];
?
?[infile closeFile];
總結(jié)
以上是生活随笔為你收集整理的6月19日 NSFileHandle文件类的常用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在Linux终端中使用Clash(cla
- 下一篇: Object 保存到文件中