IOS 檔案管理 2,ios檔案管理
IOS開發-檔案管理(二)
五、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];
六、讀取檔案類和常用方法
常用處理方法
+ (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];