0

我正在开发一个移动应用程序(使用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);

}

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

4

1 回答 1

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);
    }
}
于 2013-06-24T11:34:20.860 回答