如何在j2me中打印包含子目录的目录中的所有文件而不递归

时间:2013-06-24 11:29:03

标签: java-me

我正在使用移动应用程序(使用j2me),我的要求是打印目录中的所有文件,包括其所有子目录而不递归,我已经使用递归完成了我的代码递归就在这里

 public void pf1(String base_path1) throws IOException{

 FileConnection fc1=(FileConnection) Connector.open(base_path1,Connector.READ_WRITE);
 Enumeration filelist=fc1.list();
 String filename;
 while(filelist.hasMoreElements()){

 filename=(String)filelist.nextElement();
 fc1=(FileConnection)Connector.open(base_path1+filename,Connector.READ_WRITE);
 if(!fc1.isDirectory()){
     TotalFiles[TotalFileCount]=filename;
     TotalFileCount++;
     //System.out.println(filename);
 }
 else if(fc1.isDirectory()){

 pf1(base_path1+filename);

 }
 }


System.out.println(TotalFileCount);

}

请帮助,如果有的话。提前致谢

1 个答案:

答案 0 :(得分:3)

使堆栈显式化。我用伪代码完成了这个,因为这听起来有点像家一样!您目前的结构有点像这样:

public void List(Directory directory) {
    forevery file in directory
       if (isDirectory(file)) List(file)
       else print(file) // recursion uses a stack
}

相反,您可以使用自己的堆栈显式调用堆栈。递归被替换为while循环。

public void List(Directory directory) {
    Stack directories = new Stack();
    directories.push(directory);

    while(!directories.Empty()) {
      Directory dir = directories.pop();

      forevery file in dir
         if (IsDirectory(file)) directories.push(file)
         else print(file);
    }
}