五、Plist文件
String方式添加
NSString *path = [NSHomeDirectory( ) stringByAppendingPathComponent:@"Array.plist"];
NSString *content = @"abcd";
[contect writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
Array方式添加
NSString *path = [NSHomeDirectory( ) stringByAppendingPathComponent:@"Array.plist"];
[NSArray *array = [[NSArray alloc] initWithObjects:@"123", @"798",@"000",nil]; [array writeToFile:path atomically:YES];
Dictionary方式添加
NSString *path = [NSHomeDirectory( ) stringByAppendingPathComponent:@"Dic.plist"];
NSDictionary *dic = [NSDictionary alloc] initWithObjects:@"first",@"second",@"third"forKeys:@"123",@"456",@"798"]; [dic writeToFile:path atomically:YES];
-
數組、字典只能將BOOL、NSNumber、NSString、NSData、NSDate、NSArray、NSDictionary寫入屬性列表plist文件
六、讀取文件類和常用方法
-
NSFileHandle類主要對文件內容進行讀取和寫入操作
-
NSFileManager類主要對文件的操作(刪除、修改、移動、複製等等)
常用處理方法
+ (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];