尋找檔案
下面通過一個程式有組合使用上面所學的知識,比如NSString、NSMutableArray、NSEnumerator以及NSFileManager來對檔案系統進行操作,如建立目錄、刪除檔案、移動檔案或者擷取檔案資訊。在下面的例子中,會要求NSFileManager來建立NSDirectoryEnumerator來遍曆檔案的階層。通過注釋對下面的例子進行說明:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
//自動釋放池的樣板代碼
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//通過NSFileManager中的defaultManager建立一個NSFileManager對象
NSFileManager*manager;
manager =[NSFileManager defaultManager];
//指定目錄,stringByExpandingTildeInPath將”~”替換成目前使用者的主目錄。
NSString*home;
home =[@"~" stringByExpandingTildeInPath];
//將路徑字串傳遞給檔案管理工具,並得到NSDirectoryEnumerator對象,儲存了檔案夾下面的階層
NSDirectoryEnumerator *direnum;
direnum =[manager enumeratorAtPath: home];
//定義一個可變數組對象,用來儲存匹配的檔案資訊
NSMutableArray*files;
files =[NSMutableArray arrayWithCapacity: 42];
NSString *filename;
//定義一個空的NSString對象,如果遍曆出來的對象為nil則代表到結尾了,可以跳轉迴圈
while (filename = [direnum nextObject]) {
//如果符合條件,則儲存到可變數組中
if ([[filename pathExtension]
isEqualTo: @"jpg"]) {
[filesaddObject: filename];
}
}
//定義枚舉對象
NSEnumerator*fileenum;
fileenum =[files objectEnumerator];
//依次列印出數組中的內容
while(filename = [fileenum nextObject]) {
NSLog(@"%@", filename);
}
//自動釋放池的樣板代碼做清理工作
[pool drain];
return 0;
}