2012-03-17 9 views
0

親パスを使用すると、その親パス内にあるすべてのフォルダとファイルパスを走査して格納する必要があります。どのデータ構造をここに適用する必要がありますか?私の昔のいずれかのディレクトリにこれを見つけたファイルシステムのパスを格納するのに適したデータ構造はどれですか?

+5

明らかに木です。 – Juvanis

+0

リストのツリー – Drona

答えて

1

が、私は、ツリーデータ構造は、ツリーがより適切である

import java.io.File; 

public class DirectoryReader { 

    static int spc_count=-1; 

    static void Process(File aFile) { 
    spc_count++; 
    String spcs = ""; 
    for (int i = 0; i < spc_count; i++) 
     spcs += " "; 
    if(aFile.isFile()) 
     System.out.println(spcs + "[FILE] " + aFile.getName()); 
    else if (aFile.isDirectory()) { 
     System.out.println(spcs + "[DIR] " + aFile.getName()); 
     File[] listOfFiles = aFile.listFiles(); 
     if(listOfFiles!=null) { 
     for (int i = 0; i < listOfFiles.length; i++) 
      Process(listOfFiles[i]); 
     } else { 
     System.out.println(spcs + " [ACCESS DENIED]"); 
     } 
    } 
    spc_count--; 
    } 

    public static void main(String[] args) { 
    String nam = "H:/rel"; 
    File aFile = new File(nam); 
    Process(aFile); 
    } 

} 
0

よりefficient-だと思います。ルートディレクトリはツリーのルートとみなされます。各サブディレクトリはサブツリーを構成します。各ファイルと空のディレクトリは葉を表します。次に、ツリートラバーサルアルゴリズムを使用して、ディレクトリの内容を印刷することができます。 ディレクトリの内容を一覧表示するための再帰的な疑似コードです。

listEntireDirectory(file){ 
    printFileName(file); // print the name of directory of file 
    if(isDirectory(file)){ 
     for each subDirectory subDir in directory file // loop through the content of your directory 
      listEntireDirectory(subDir); 
} 

用語ファイルは、ボットディレクトリとフラットファイルを表すために使用されます。

関連する問題