- ベストアンサー
ディレクトリの階層構造をツリー表示したい
- 指定したディレクトリ以下のディレクトリの階層構造を、インデントをつけてツリー表示するプログラムを作成したい。
- 現在はディレクトリ名を表示することはできているが、インデントをうまくつける方法に悩んでいる。
- どのような方法や修正を行えば、ディレクトリの階層構造をツリー表示できるのか教えてほしい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >インデントをうまくつけられずに困っています。 インデントはメソッドの引数で指定するように作って、メソッドを呼ぶときに現在の階層に一つ足した数を渡してやればいいのではないでしょうか。 メソッド内でインデントの数だけ空白なりタブなりを追加してやればいいと思います。 (コンパイルするときは全角スペースを半角スペースに変換してからにしてください) import java.io.*; public class DirTree { public static void main(String[] args) { showDirName(new File("C:\\hoge\\hoge"), 0); } static void showDirName(File dir, int indent) { if (dir.isDirectory()) { StringBuffer sb = new StringBuffer(); //インデントの深さの分までタブを入れる for(int i = 0; i < indent; i++) { sb.append("\t"); } sb.append(dir.getName()); System.out.println(sb.toString()); File[] dirList = dir.listFiles(); for (int i = 0; i < dirList.length; i++) { //現在のインデントに1足して再帰的にメソッドを呼ぶ showDirName(dirList[i], indent + 1); } } } }
お礼
解決しました、ありがとうございました! for文でまわして、StringBufferを使えばよかったのですね…大変参考になりました。 ご丁寧にソースまでつけてくださって本当にどうもありがとうございました!