我正在使用移动应用程序(使用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);
}
请帮助,如果有的话。提前致谢
答案 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);
}
}