public static int getSum(int num) { if (1 == num) return 1; return num+getSum(num-1); }
public static void getDirAndFile(File dir) { System.out.println("dir:" + dir); File[] files = dir.listFiles(); for (File file2 : files) { if (file2.isHidden()) { continue; } if (file2.isDirectory()) { getDirAndFile(file2); } else { System.out.println("file: " + file2.getName()); } } }
思路:
* 1、可以对每个目录for循环,不过层级过多,容易死掉
* 2、每遍历到一个目录,不对其继续遍历,而是先存储到容器中
*
相当于把所有目录(无论是否同级)都存储起来
* 3、遍历容器时就是取到目录,对目录继续遍历即可
*
4、从容器中遍历目录,发现内部还有目录,则一样存储到容器中
* 5、只要不断遍历这个容器就可以
public static void getAllFile(){ //队列存储目录 Quere<File> quere =new Quere<File>(); File dir =new File("F:\\"); File[] files = dir.listFiles(); System.out.println("----------------"+dir+"---------------"); for (File file : files) { if(file.isDirectory()&&!file.isHidden()){ quere.myAdd(file); }else{ System.out.println(file.getName()); } } //遍历队列中的目录,若内部还有目录,则存储到队列中 //循环遍历队列,直到为空 while(!quere.isNull()){ File sub_dir = quere.myGet(); System.out.println("--------------"+sub_dir+"-----------------"); File[] sub_Files = sub_dir.listFiles(); for (File file : sub_Files) { if(file.isDirectory()){ quere.myAdd(file); }else{ System.out.println(file.getName()); } } } }
class Quere<T>{ private LinkedList<T> link; public Quere(){ link =new LinkedList<T>(); } public void myAdd(T t){ link.addFirst(t); } public T myGet(){ return link.removeLast(); } public boolean isNull(){ return link.isEmpty(); } }
原文:http://www.cnblogs.com/bbthome/p/3574593.html