首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

Objective-C 文件操作:NSFileHandle 讀寫與定位完整指南

     編輯:關於C

NSFileHandle 簡介

NSFileHandle 提供檔案層級的讀寫操作,配合 NSFileManager(檔案管理:建立、刪除、移動)構成完整的檔案 I/O 體系。核心流程三步驟:

  1. 建立 NSFileHandle 物件(指定路徑與模式)
  2. 執行讀/寫/定位/截斷等操作
  3. 呼叫 closeFile 關閉

常用類別方法(建立句柄)

方法用途
fileHandleForReadingAtPath:唯讀開啟
fileHandleForWritingAtPath:唯寫開啟
fileHandleForUpdatingAtPath:讀寫開啟

常用實例方法

方法說明
availableData回傳可讀資料 (NSData)
readDataToEndOfFile從目前位置讀到檔尾
readDataOfLength:讀取指定長度
writeData:寫入 NSData
offsetInFile取得目前偏移量
seekToEndOfFile移動到檔尾
seekToFileOffset:移動到指定偏移
truncateFileAtOffset:截斷檔案長度
synchronizeFile同步快取到磁碟
closeFile關閉檔案

實戰範例

1. 追加資料到檔案


@autoreleasepool {
    NSString *home = NSHomeDirectory();
    NSString *path = [home stringByAppendingFormat:@"/Desktop/testfile"];
    NSFileHandle *fh = [NSFileHandle fileHandleForUpdatingAtPath:path];
    [fh seekToEndOfFile];
    NSString *str = @"測試加入的資料";
    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
    [fh writeData:data];
    [fh closeFile];
}

2. 定位讀取檔案後半段


NSString *path = [NSHomeDirectory() stringByAppendingFormat:@"/Desktop/testfile"];
NSFileHandle *fh = [NSFileHandle fileHandleForReadingAtPath:path];
NSUInteger len = [fh availableData].length;
[fh seekToFileOffset:len/2];
NSData *data = [fh readDataToEndOfFile];
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@", str);

3. 複製檔案內容


NSString *src = [NSHomeDirectory() stringByAppendingFormat:@"/Desktop/testfile"];
NSString *dst = [NSHomeDirectory() stringByAppendingFormat:@"/Desktop/outfile"];
[[NSFileManager defaultManager] createFileAtPath:dst contents:nil attributes:nil];

NSFileHandle *in = [NSFileHandle fileHandleForReadingAtPath:src];
NSFileHandle *out = [NSFileHandle fileHandleForWritingAtPath:dst];
NSData *all = [in availableData];
[out writeData:all];
[in closeFile]; [out closeFile];

NSData 常用轉換方法

  • dataUsingEncoding: 字串 → NSData
  • initWithData:encoding: NSData → 字串
  • bytes 取得原始 const void* 指標
  • length 取得位元組長度

注意事項

  • 所有路徑需為完整絕對路徑(可用 NSHomeDirectory() 組合)。
  • 讀寫大檔案時建議分塊處理,避免一次 availableData 佔用過多記憶體。
  • 寫入後務必 synchronizeFile 或 closeFile 確保資料落盤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved