============================
Objective-C 目錄與文件操作
============================
學習目標
- 掌握NSFileManager類常用的文件管理操作
- 掌握NSFileHandle類常用的文件數據操作
1.理解部分
1.1文件
<1>文件管理類NSFileManager
2.對文件進行管理操作
a.遍歷查看目錄下的文件
【深度遍歷】
【淺度遍歷】
b.創建文件/目錄
c.拷貝文件/目錄
d.移動文件/目錄
e.刪除文件/目錄
<2>文件句柄類NSFileHandle
1.對文件進行讀寫首先需要NSFileHandle打開文件
2.NSFileHandle對文件進行讀寫都是NSData類型的二進制數據
2.實踐部分
2.1 NSFileManager
<1>創建文件管理器單例對象
NSFileManager * fm = [NSFileManager defaultManager];
<2>遍歷目錄下的內容
//淺度遍歷
//僅僅遍歷當前文件夾下的第一層子文件夾
/// //contentsOfDirectoryAtPath,指定路徑下的第一層子文件夾(文件內容)
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error;
//深度遍歷(又稱為遞歸便利)
//遍歷指定路徑下的所有文件夾和文件
//指定路徑下的子文件夾下的所有文件
- (NSArray *)subpathsOfDirectoryAtPath:(NSString *)path error:(NSError **)error
<3>創建文件
//創建普通文件
//createFileAtPath,在指定路徑下,創建文件
//第二個參數contents,是指在創建文件的同時,附上的文件內容
//第三個參數attributes ,如果寫nil, attributes會有系統自動管理
- (BOOL)createFileAtPath:(NSString *)path contents:(NSData *)data attributes:(NSDictionary *)attr;
//創建目錄
//就是在指定路徑下創建文件夾
//withIntermediateDirectories,是否創建沒有路徑
- (BOOL)createDirectoryAtPath:(NSString *)path withIntermediateDirectories:(BOOL)createIntermediates attributes:(NSDictionary *)attributes error:(NSError **)error ;
<4>拷貝文件/目錄
//copyItemAtPath,在指定路徑下拷貝項目(文件夾,也能文件)
//srcPath,原路徑
//toPath,目標路徑
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error ;
<5>移動文件/目錄
//moveItemAtPath,移動指定路徑下的文件或目錄,到另外一個指定的路徑
//剪切的同時,也能修改目錄或文件的名字
- (BOOL)moveItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error ;
<6>刪除文件/目錄
//removeItemAtPath 刪除指定路徑下的文件夾或者文件
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
<7>獲取文件屬性
// attributesOfItemAtPath 查看指定目錄下的文件或者文件夾的屬性
- (NSDictionary *)attributesOfItemAtPath:(NSString *)path error:(NSError **)error;
<8>判斷文件是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
2.2 NSFileHandle
NSFileHandle 對文件進行操作,讀,寫,設置文件指針偏移量的操作
2.2.1方法:
<1>打開文件方法
//以只讀方式打開
+ (id)fileHandleForReadingAtPath:(NSString *)path;
//以只寫方式打開
+ (id)fileHandleForWritingAtPath:(NSString *)path;
//以讀寫方式打開
+ (id)fileHandleForUpdatingAtPath:(NSString *)path;
<2>讀指定長度的數據
//readDataOfLength 讀取指定長度的字符串
//得知,每個漢字在編譯器中占三個字節,英文一個字節
- (NSData *)readDataOfLength:(NSUInteger)length;
<3>從當前偏移量讀到文件尾
//是將文本中所有的數據一次性讀到內存中
- (NSData *)readDataToEndOfFile;
<4>設置文件偏移量
//2.txt中的文字abcefg,如果偏移量為2的話,那么就是從c字符往后讀
//偏移量的默認值為0
- (void)seekToFileOffset:(unsigned long long)offset;
<5>將文件偏移量定位到文件尾
//將指針指向文本的結尾
- (unsigned long long)seekToEndOfFile;
<6>寫文件
//(NSData *)data,內存數據類型
// NSString *string=@“abc”,[string dataUsingEncoding:NSUTF8StringEncoding]
- (void)writeData:(NSData *)data;
<7>將文件偏移量以后的內容刪除,
//(unsigned long long)offset這個參數用於設置文件偏移量
- (void)truncateFileAtOffset:(unsigned long long)offset;