指定したディレクトリ以下のディレクトリの階層構造を、ツリー表示するプログラムを作りたいと思っています。
階層構造は、階層が下がるごとにインデントをつけてツリー表示したいと思っています。
指定ディレクトリ以下のディレクトリ名をすべて表示させるところまではできたのですが、インデントをうまくつけられずに困っています。
ソースは以下のようにしました。
----------------------------------
import java.io.File;
public class DirTree {
String dirName;
void showDirName(){
File directory = new File(dirName);
File[] subFiles = directory.listFiles();
for (int i = 0; i < subFiles.length; i++)
{
if(subFiles[i].isDirectory()==true)
{
System.out.println(subFiles[ i ].getName() );
dirName = subFiles[ i ].getPath();
showDirName();
}
}
}
}
---------------------------------------------
何かよい方法や、ここをこうしたらと言うのがありましたら教えていただけませんでしょうか。
よろしくお願いいたします。
No.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を使えばよかったのですね…大変参考になりました。
ご丁寧にソースまでつけてくださって本当にどうもありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- PHP ファイルアップロードに関してのセキュリティについてアドバイスお願い致します 1 2023/08/20 00:25
- UNIX・Linux Linuxの実行結果を修正したいです。 6 2022/11/22 12:57
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- HTML・CSS HTMLを正しく表示させるには 2 2023/06/18 09:12
- その他(開発・運用・管理) バッチファイルで特定のファイル・ディレクトリ以外を削除する方法について 4 2022/05/31 14:03
- Visual Basic(VBA) VBプロジェクトでのフォルダ構成について 1 2023/07/22 03:49
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
- その他(開発・運用・管理) フォルダの中にファルダを作成してファイルを格納するバッチコマンド 1 2022/06/30 11:39
- UNIX・Linux 空のディレクトリで dir を行ったとき 4 2023/05/05 17:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
【sendkeysメソッドが動かずに...
-
エクセルのマクロでプリンタを...
-
コマンドプロンプト実行後に画...
-
Labelコントロールに数字を代入...
-
エクセルVBAで、ユーザーフォー...
-
javascriptからjavaを呼び出したい
-
エクセルVBAにおけるON TIMEメ...
-
mainメソッドのthrows節で設定...
-
Excel VBA でExcelを終了したい...
-
onClickで関数呼出し後に、結果...
-
pythonのプログラムについての...
-
Java for文で、A という文字を1...
-
canvasに描画したものを全て削...
-
boolean型のフィールドとゲッタ...
-
配列のメソッド
-
ExcelのVBAでファイルを一括移動
-
マインスイーパの作り方
-
ウィンドウを最前面にできません
-
eclipse-Tomcatでのデバッグに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
エクセルVBAにおけるON TIMEメ...
-
【sendkeysメソッドが動かずに...
-
コマンドプロンプト実行後に画...
-
onClickで関数呼出し後に、結果...
-
DataGridViewでセルクリックイ...
-
Labelコントロールに数字を代入...
-
ExcelのxlDialogInsertPictureで。
-
final修飾子を使っているのに、...
-
JSPで<SELECT>の中にDBから持っ...
-
VBPをダブルクリックするとたま...
-
Excel VBA でExcelを終了したい...
-
Refreshメソッドの使い方
-
ウィンドウを最前面にできません
-
javascriptからjavaを呼び出したい
-
VB.netで、シリアル通信のタイ...
-
mainメソッドのthrows節で設定...
-
VBAでSaveAs使用し、指定してい...
-
PDFファイルから別ウィンドウで...
-
Application.Wait の参照設定
おすすめ情報