Objective-C檔案和目錄操作,IOS檔案操作,NSFileManager使用檔案操作:
objective-c通過使用NSFileManager類來管理和操作檔案、目錄,NSFileManager,檔案或目錄是使用檔案的路徑名的唯一标示。每個路徑名都是一個NSString對象。
NSFileManager對象通過defaultManager方法來建立執行個體
列如:
NSFileManager *fm = [NSFileManager defaultManager];
删除某個檔案
[fm removeItemAtPath:@"filename" error:NULL];
error:參數是一個指向NSError對象的指針,能夠提供錯誤的資訊。如果指定為NULL的話就會使用預設的行為,傳回值是BOOL類型的方法,操作成功傳回YES反之傳回NO
判斷檔案是否被删除
if([fm removeItemAtPath:@"filename" error:NULL]==NO){
NSLog(@"檔案删除失敗");
return 1;
}
NSFileManager常用的檔案方法:
-(NSData*)contentsAtPath:path 從一個檔案中讀取資料
-(BOLL)createFileAtPath:path contents:(NSData*)data attributes: attr 向一個檔案寫入資料
-(BOOL)removeItemAtPath:path error:err 删除一個檔案
-(BOOL)moveItemAtPath:from toPath:to error:err 重命名或移動一個檔案(to 不能是已存在的)
-(BOOL)copyItemAtPath:from toPath:to error:err 複制檔案(to 不能是已存在的)
-(BOOL)contentsEqualAtPath:path1 andPath:path2 比較這兩個檔案的内容
-(BOOL)fileExistsAtPath:path 測試檔案是否存在
-(BOOL)isReadableFileAtPath:path 測試檔案是否存在,并且是否能執行讀操作
-(BOOL)isWritableFileAtPath:path 測試檔案是否存在,并且是否能執行寫操作
-(NSDictionary*)attributesOfItemAtPath:path error:err 擷取檔案的屬性
屬性字典允許你指定要建立的檔案的權限,如果将該參數指定為nil,該檔案會被設定為預設權限。
1、通過一段程式來對檔案進行操作:
//
// main.m
// NSFileManager_01
//
// Created by swinglife on 13-11-10.
// Copyright (c) 2013年 swinglife. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
//檔案名
NSString *fileName = @"testFile";
NSString *fileContent = @"這是檔案内容!!!!";
NSData *fileData = [fileContent dataUsingEncoding:NSUTF8StringEncoding];
//建立NSFileManager執行個體
NSFileManager *fm = [NSFileManager defaultManager];
//建立檔案
[fm createFileAtPath:fileName contents:fileData attributes:nil];
//判斷檔案是否存在 不存在就結束程式
if([fm fileExistsAtPath:fileName]==NO){
NSLog(@"檔案不存在");
return 1;
}
//拷貝檔案
if([fm copyItemAtPath:fileName toPath:@"newFile" error:NULL]==NO){
NSLog(@"複制失敗");
return 2;
}
//測試兩個檔案是否相同
if([fm contentsEqualAtPath:fileName andPath:@"newFile"]==NO){
NSLog(@"檔案不相同");
return 3;
}
//重命名newFile
[fm moveItemAtPath:@"newFile" toPath:@"newFile2" error:NULL];
//擷取newFile2的大小
NSDictionary *fileAttr = [fm attributesOfItemAtPath:@"newFile2" error:NULL];
if(fileAttr!=nil){
NSLog(@"檔案大小:%llu bytes",[[fileAttr objectForKey:NSFileSize] unsignedLongLongValue]);
}
//删除檔案
[fm removeItemAtPath:fileName error:NULL];
//顯示newFile2的内容
NSString *data = [NSString stringWithContentsOfFile:@"newFile2" encoding:NSUTF8StringEncoding error:NULL];
NSLog(@"%@",data);
}
return 0;
}
NSFileManager常用的目錄方法
-(NSString*)currentDirectoryPath 擷取目前目錄
-(BOOL)changeCurrentDirectoryPath:path 更改目前目錄
-(BOOL)copyItemAtPath:from toPath:to error:err 複制目錄結構
-(BOOL)createDirectoryAtPath:path withIntermediateDirectories:(BOOL)flag attributes:attr 建立一個新目錄
-(BOOL)fileExistsAtPath:path isDirectory:(BOOL*)flag 測試檔案是不是目錄(flag中存儲結果)
-(NSArray*)contentsOfDirectoryAtPath:path error:err 列出目錄内容
-(NSDirectoryEnumerator*)enumeratorAtPath:path 枚舉目錄的内容
-(BOOL)removeItemAtPath:path error:err 删除空目錄
-(BOOL)moveItemAtPath:from toPath:to error:err 重命名或移動一個目錄
2、通過一段程式來對目錄進行操作:
//
// main.m
// NSFileManager_02
//
// Created by swinglife on 13-11-10.
// Copyright (c) 2013年 swinglife. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
//檔案目錄
NSString *dirName = @"testDir";
//建立NSFileManager執行個體
NSFileManager *fm = [NSFileManager defaultManager];
//擷取目前目錄
NSString *path = [fm currentDirectoryPath];
NSLog(@"Path:%@",path);
//建立新目錄
[fm createDirectoryAtPath:dirName withIntermediateDirectories:YES attributes:nil error:NULL];
//重命名新的目錄
[fm moveItemAtPath:dirName toPath:@"newDir" error:NULL];
//更改目前目錄到新的目錄
[fm changeCurrentDirectoryPath:@"newDir"];
//擷取目前工作目錄
path = [fm currentDirectoryPath];
NSLog(@"Path:%@",path);
}
return 0;
}