欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

非递归方法实现对目录的全遍历,非递归目录,递归的方法,在递归数量过

来源: javaer 分享于  点击 42418 次 点评:243

非递归方法实现对目录的全遍历,非递归目录,递归的方法,在递归数量过


递归的方法,在递归数量过大的时候,会导致堆栈溢出错误。用非递归方法,可以实现。

package com.taoxg.test;import java.io.*;import java.util.LinkedList;public class LoopDir { public static void main(String[] args) {  long count=0;  long countd=0;  //链表  LinkedList<File> list = new LinkedList<File>();  File dir = new File("D://");  File[] file = dir.listFiles();  for (int i = 0; i < file.length; i++) {   if (file[i].isDirectory())    //把第一层的目录,全部放入链表    list.add(file[i]);   else    count++;    System.out.println("文件"+count + ":" + file[i].getAbsolutePath());  }  File tmp=null;  //循环遍历链表  while (!list.isEmpty()) {   //把链表的第一个记录删除   tmp = list.removeFirst();   //如果删除的目录是一个路径的话   if (tmp.isDirectory()) {    //列出这个目录下的文件到数组中    file = tmp.listFiles();    if (file == null)     continue;    //遍历文件数组    for (int i = 0; i < file.length; i++) {     if (file[i].isDirectory())      //如果遍历到的是目录,则继续加入链表      list.add(file[i]);     else     count++;     System.out.println("文件"+count + ":" + file[i].getAbsolutePath());    }   } else {    countd++;    System.out.println("目录["+countd+"]路径:" +tmp.getAbsolutePath());   }  } }}//该片段来自于http://byrx.net
相关栏目:

用户点评