六十七、基础框架(二十五)文件操作-列举 目录内容
2012-10-29 10:07
489 查看
有些时候,你 会需要将 目录的内容 列举出来。要将 目录的内容列举出来,既可以采取 enumeratorAtPath:这项措施 也可以采取 directoryContentsAtPath:这项措施。如果 采取 enumeratorAtPath:这项措施,那么 子目录中的内容 也会被列举出来。
如果 采取 directoryContentsAtPath:这项措施,那么 特定目录中的内容 就会被列举出来,列举的结果 会存储 在数组物件当中。如果 目录当中 包含 子目录,那么 子目录的内容 则不会被列举出来。
下面的程序 示范了 如何列举 目录中的内容:
运行 这个程序后,可以得到 这样的结果
仔细 看看 这几行语句:
首先 对 文件管理器物件myFileManager 采取了 enumeratorAtPath:这项措施。enumeratorAtPath:这项措施 会将 一个NSDictionaryEnumerator物件 存储 在myDictionaryEnumerator当中。在
这行语句中 每当你 对 myDictionaryEnumerator这个物件 采取 nextObject这项措施,你 都会得到 目录中下一个文件或者目录的路径,并且 存储 在变量path当中,再 利用 NSLog()函数 显示出来。直到 所有文件或者目录的路径都 找到后,你 就会得到 一个空值nil,并且 跳出 while()循环。
在程序的运行结果当中 你 可以看到 两种列举目录内容的技巧之不同。enumeratorAtPath:会将 目录中子目录的内容 列举出来,而 directoryContentsAtPath: 则不会。在while()循环执行的过程中 我们 可以这样避免 子目录中的内容 被列举出来:
其中 flag 是 BOOL类型的变量。如果 当前的路径path 是 目录,那么 fileExistsAtPath:isDirectory:这项措施 就会将 YES 存储 在flag当中;如果 不是,则会将 NO 存储 在flag当中。
如果 采取 directoryContentsAtPath:这项措施,那么 特定目录中的内容 就会被列举出来,列举的结果 会存储 在数组物件当中。如果 目录当中 包含 子目录,那么 子目录的内容 则不会被列举出来。
下面的程序 示范了 如何列举 目录中的内容:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 | #import <Foundation/NSArray.h>#import <Foundation/NSString.h>#import <Foundation/NSFileManager.h>#import <Foundation/NSAutoreleasePool.h>int main(int argc,const char *argv[]){ NSAutoreleasePool *pool=[[NSAutoreleasePool alloc] init]; NSString *path=@"/Users/Zijin/Desktop/Sample"; NSFileManager *myFileManager=[NSFileManager defaultManager]; NSDirectoryEnumerator *myDirectoryEnumerator; NSArray *directoryContents; myDirectoryEnumerator=[myFileManager enumeratorAtPath:path]; //列举目录内容 NSLog(@"用enumeratorAtPath:显示目录%@的内容:",path); while((path=[myDirectoryEnumerator nextObject])!=nil) { NSLog(@"%@",path); } //用另外一种办法列举目录内容 directoryContents=[myFileManager directoryContentsAtPath:@"/Users/Zijin/Desktop/Sample"]; NSLog(@"用directoryContentsAtPath:显示目录%@的内容:",@"/Users/Zijin/Desktop/Sample"); for(path in directoryContents) { NSLog(@"%@",path); } [pool drain]; return 0;} |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | 2012-05-13 17:30:46.379 Sample[3665:707] 用enumeratorAtPath:显示目录/Users/Zijin/Desktop/Sample的内容: 2012-05-13 17:30:46.380 Sample[3665:707] .DS_Store 2012-05-13 17:30:46.381 Sample[3665:707] .git 2012-05-13 17:30:46.381 Sample[3665:707] .git/branches 2012-05-13 17:30:46.382 Sample[3665:707] .git/COMMIT_EDITMSG 2012-05-13 17:30:46.382 Sample[3665:707] .git/config 2012-05-13 17:30:46.383 Sample[3665:707] .git/description 2012-05-13 17:30:46.383 Sample[3665:707] .git/HEAD 2012-05-13 17:30:46.384 Sample[3665:707] .git/hooks 2012-05-13 17:30:46.384 Sample[3665:707] .git/hooks/applypatch-msg.sample 2012-05-13 17:30:46.385 Sample[3665:707] .git/hooks/commit-msg.sample 2012-05-13 17:30:46.385 Sample[3665:707] .git/hooks/post-commit.sample 2012-05-13 17:30:46.386 Sample[3665:707] .git/hooks/post-receive.sample 2012-05-13 17:30:46.386 Sample[3665:707] .git/hooks/post-update.sample 2012-05-13 17:30:46.387 Sample[3665:707] .git/hooks/pre-applypatch.sample 2012-05-13 17:30:46.387 Sample[3665:707] .git/hooks/pre-commit.sample 2012-05-13 17:30:46.387 Sample[3665:707] .git/hooks/pre-rebase.sample 2012-05-13 17:30:46.388 Sample[3665:707] .git/hooks/prepare-commit-msg.sample 2012-05-13 17:30:46.388 Sample[3665:707] .git/hooks/update.sample 2012-05-13 17:30:46.389 Sample[3665:707] .git/index 2012-05-13 17:30:46.389 Sample[3665:707] .git/info 2012-05-13 17:30:46.390 Sample[3665:707] .git/info/exclude 2012-05-13 17:30:46.390 Sample[3665:707] .git/logs 2012-05-13 17:30:46.391 Sample[3665:707] .git/logs/HEAD 2012-05-13 17:30:46.391 Sample[3665:707] .git/logs/refs 2012-05-13 17:30:46.392 Sample[3665:707] .git/logs/refs/heads 2012-05-13 17:30:46.392 Sample[3665:707] .git/logs/refs/heads/master 2012-05-13 17:30:46.393 Sample[3665:707] .git/objects 2012-05-13 17:30:46.393 Sample[3665:707] .git/objects/08 2012-05-13 17:30:46.394 Sample[3665:707] .git/objects/08/0078c5decbfcb73e9665030b6221e1ccb693be 2012-05-13 17:30:46.394 Sample[3665:707] .git/objects/0d 2012-05-13 17:30:46.395 Sample[3665:707] .git/objects/0d/96feb3eb602c24f8e068f6fd88f569e4e58093 2012-05-13 17:30:46.416 Sample[3665:707] .git/objects/48 2012-05-13 17:30:46.418 Sample[3665:707] .git/objects/48/ef81ae71287847f926dbb9ccca11f8c873a7dc 2012-05-13 17:30:46.419 Sample[3665:707] .git/objects/8c 2012-05-13 17:30:46.420 Sample[3665:707] .git/objects/8c/ce74a0c6d3b68a40659921f9103f9d214088d0 2012-05-13 17:30:46.431 Sample[3665:707] .git/objects/9d 2012-05-13 17:30:46.431 Sample[3665:707] .git/objects/9d/955cc57da917155851b38806a7111120ab70da 2012-05-13 17:30:46.432 Sample[3665:707] .git/objects/c2 2012-05-13 17:30:46.432 Sample[3665:707] .git/objects/c2/7b00431338e78a7d560f021aac076f62e71ba4 2012-05-13 17:30:46.433 Sample[3665:707] .git/objects/ca 2012-05-13 17:30:46.434 Sample[3665:707] .git/objects/ca/c4dcdd18b32e1544ca2e8ef98dbc64d472c171 2012-05-13 17:30:46.434 Sample[3665:707] .git/objects/da 2012-05-13 17:30:46.435 Sample[3665:707] .git/objects/da/2c288712be3bedabfebb188547b14bac334f52 2012-05-13 17:30:46.435 Sample[3665:707] .git/objects/db 2012-05-13 17:30:46.436 Sample[3665:707] .git/objects/db/e1edcebd33105840f71feff89af8c65a0ca527 2012-05-13 17:30:46.436 Sample[3665:707] .git/objects/e4 2012-05-13 17:30:46.437 Sample[3665:707] .git/objects/e4/4c0a7d31a66cdd89e076ffceda1121d5b23440 2012-05-13 17:30:46.437 Sample[3665:707] .git/objects/e5 2012-05-13 17:30:46.438 Sample[3665:707] .git/objects/e5/09e6dc045e6f65e373e54a8142ff3395af93be 2012-05-13 17:30:46.438 Sample[3665:707] .git/objects/e5/e411b533ba3df7f530c4d5f264d87266ebdb93 2012-05-13 17:30:46.510 Sample[3665:707] .git/objects/e6 2012-05-13 17:30:46.512 Sample[3665:707] .git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 2012-05-13 17:30:46.513 Sample[3665:707] .git/objects/info 2012-05-13 17:30:46.513 Sample[3665:707] .git/objects/pack 2012-05-13 17:30:46.513 Sample[3665:707] .git/refs 2012-05-13 17:30:46.514 Sample[3665:707] .git/refs/heads 2012-05-13 17:30:46.514 Sample[3665:707] .git/refs/heads/master 2012-05-13 17:30:46.515 Sample[3665:707] .git/refs/tags 2012-05-13 17:30:46.515 Sample[3665:707] Sample 2012-05-13 17:30:46.516 Sample[3665:707] Sample/.DS_Store 2012-05-13 17:30:46.516 Sample[3665:707] Sample/main.m 2012-05-13 17:30:46.517 Sample[3665:707] Sample/Sample-Prefix.pch 2012-05-13 17:30:46.517 Sample[3665:707] Sample/Sample.1 2012-05-13 17:30:46.518 Sample[3665:707] Sample.xcodeproj 2012-05-13 17:30:46.518 Sample[3665:707] Sample.xcodeproj/project.pbxproj 2012-05-13 17:30:46.519 Sample[3665:707] Sample.xcodeproj/project.xcworkspace 2012-05-13 17:30:46.519 Sample[3665:707] Sample.xcodeproj/project.xcworkspace/contents.xcworkspacedata 2012-05-13 17:30:46.520 Sample[3665:707] Sample.xcodeproj/project.xcworkspace/xcuserdata 2012-05-13 17:30:46.520 Sample[3665:707] Sample.xcodeproj/project.xcworkspace/xcuserdata/Zijin.xcuserdatad 2012-05-13 17:30:46.521 Sample[3665:707] Sample.xcodeproj/project.xcworkspace/xcuserdata/Zijin.xcuserdatad/UserInterfaceState.xcuserstate 2012-05-13 17:30:46.521 Sample[3665:707] Sample.xcodeproj/xcuserdata 2012-05-13 17:30:46.522 Sample[3665:707] Sample.xcodeproj/xcuserdata/Zijin.xcuserdatad 2012-05-13 17:30:46.525 Sample[3665:707] Sample.xcodeproj/xcuserdata/Zijin.xcuserdatad/xcdebugger 2012-05-13 17:30:46.526 Sample[3665:707] Sample.xcodeproj/xcuserdata/Zijin.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist 2012-05-13 17:30:46.527 Sample[3665:707] Sample.xcodeproj/xcuserdata/Zijin.xcuserdatad/xcschemes 2012-05-13 17:30:46.527 Sample[3665:707] Sample.xcodeproj/xcuserdata/Zijin.xcuserdatad/xcschemes/Sample.xcscheme 2012-05-13 17:30:46.528 Sample[3665:707] Sample.xcodeproj/xcuserdata/Zijin.xcuserdatad/xcschemes/xcschememanagement.plist 2012-05-13 17:30:46.528 Sample[3665:707] 用directoryContentsAtPath:显示目录/Users/Zijin/Desktop/Sample的内容: 2012-05-13 17:30:46.529 Sample[3665:707] .DS_Store 2012-05-13 17:30:46.529 Sample[3665:707] .git 2012-05-13 17:30:46.529 Sample[3665:707] Sample 2012-05-13 17:30:46.530 Sample[3665:707] Sample.xcodeproj Program ended with exit code: 0 |
12345678910111213 | myDirectoryEnumerator=[myFileManager enumeratorAtPath:path]; //列举目录内容 NSLog(@"用enumeratorAtPath:显示目录%@的内容:",path); while((path=[myDirectoryEnumerator nextObject])!=nil) { NSLog(@"%@",path); } |
1 | while((path=[myDirectoryEnumeratornextObject])!=nil) |
在程序的运行结果当中 你 可以看到 两种列举目录内容的技巧之不同。enumeratorAtPath:会将 目录中子目录的内容 列举出来,而 directoryContentsAtPath: 则不会。在while()循环执行的过程中 我们 可以这样避免 子目录中的内容 被列举出来:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | BOOLflag; while((path=[myDirectoryEnumeratornextObject])!=nil) { NSLog(@"%@",path); [myFileManagerfileExistsAtPath:pathisDirectory:&flag]; if(flag==YES) { [myDirectoryEnumeratorskipDescendents]; } } |
相关文章推荐
- [objective-c]—六十六、基础框架(二十四)文件操作-目录操作
- 六十六、基础框架(二十四)文件操作-目录操作
- 基础框架-文件操作-目录操作
- [objective-c]—六十六、基础框架(二十四)文件操作-目录操作
- Java-基础 文件操作IO 将文件内容复制到另外一个文件中去
- php基础06_文件增删、目录读取及其他操作
- 【QT相关】文件、目录基础操作
- 【Linux基础】001_Linux 目录结构及文件基本操作
- Linux基础入门(三、目录结构及基本文件操作)
- linux基础命令学习(二)文件和目录操作
- Linux 查看文件内容的基础命令操作
- 六十五、基础框架(二十三)文件操作-数据物件
- 【Python/PE】python中实现文件操作的几种功能(删除指定目录下的所有内容,文件复制等)
- Linux2文件目录操作3-文件内容查询
- Python3基础 os listdir() 列举当前目录的所有文件及文件夹的名字
- linux基础教程-----目录文件操作(2)
- 六十八、基础框架(二十六)文件操作-路径操作
- 【跟随万一老师的足迹】查找目录下文件,在万一老师的基础上升级下,支持多文件查找 - 文件操作(一)
- linux入门-菜鸟级操作2-基础的目录和文件的操作
- 六十九、基础框架(二十七)文件操作-路径操作2