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 に答える