<code>目录结构 例如 a a-1/a-11/a-111 b-1/b-11/b-111/b-1111 c c-1/c-11/c-111 d-1/d-11/d-111/d-111 已知一个目录列表 如上的 a c 遍历子目录 按深度2来遍历 结果就是 a a-1/a-11/ b-1/b-11/ c c-1/c-11/ d-1/d-11/ 求代码 PHP JAVA 都行 </code>
<code>目录结构 例如 a a-1/a-11/a-111 b-1/b-11/b-111/b-1111 c c-1/c-11/c-111 d-1/d-11/d-111/d-111 已知一个目录列表 如上的 a c 遍历子目录 按深度2来遍历 结果就是 a a-1/a-11/ b-1/b-11/ c c-1/c-11/ d-1/d-11/ 求代码 PHP JAVA 都行 </code>
本来这种问题,只需要你稍微google一下就有现成的答案滴,直接贴答案并不是一种好的交流学习方式。
故此,还是贴一些Java7新的文件API写的代码吧,至于java7之前的文件API写的代码,google即可得之。
<code>Path start = FileSystems.getDefault().getPath("D:/cglib"); Files.walkFileTree(start, EnumSet.allOf(FileVisitOption.class), 3, new FileVisitor<path>() { @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { System.out.println(dir); return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { return FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { return FileVisitResult.CONTINUE; } @Override public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException { return FileVisitResult.CONTINUE; } }); </path></code>
这个貌似不难吧,我用javascript写给你吧,都差不多的。
<code class="lang-javascript">var deps=3 var basenames=["a","b","c"] for ( var i =0;i<basenames.length var suffix="" for j="0;j<deps;j++){" result="fs.readdir(basenames[i]+suffix)" console.log></basenames.length></code>
递归的时候加上层级参数即可,每次递归参数都需要+1来确认当前层级,然后在下次递归开始的时候判断当前层级是否已经到达限制层级,如果到达则不再往下层递归
<code><?php function read_folder($folder, $level = 1) { if (is_dir($folder)) { if ($dh = opendir($folder)) { while (($file = readdir($dh)) !== false) { if ($file != '.' && $file != '..') { $path = $folder.DIRECTORY_SEPARATOR.$file; if (is_dir($path)) { var_dump($path, $level); // 这里控制读取的层级 if ($level < 2) { read_folder($path, $level + 1); //每次递归都要增加层级计数 } } } } closedir($dh); } } } </code></code>