ファイル操作/サブディレクトリ内を含むファイル一覧を取得
の編集
Top
/
ファイル操作
/
サブディレクトリ内を含むファイル一覧を取得
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
AutoTicketLinkName
FrontPage
MenuBar
WikiWikiWeb
お約束
その他
その他/JavaでBeep(Bell)を鳴らすサンプルソース
その他/UnsupportedClassVersionErrorの原因及び対処法
その他/シェルに終了コードを渡す方法
システム関連
システム関連/Javaの情報を取得する
システム関連/Javaを実行するOS情報を取得する
ソート
ソート/ArrayListのソートサンプル
ソート/独自クラスでキー指定のソートサンプル
ソート/独自クラスのソートサンプル
ネットワーク
ネットワーク/HTTP(GET)サンプルソース
ファイル操作
ファイル操作/basename,dirnameのサンプル
ファイル操作/CSV取込みサンプルを作ってみた
ファイル操作/サブディレクトリ内を含むファイル一覧を取得
ファイル操作/テキストファイルの出力
ファイル操作/テキストファイルの読み込み
ファイル操作/ディレクトリ配下のファイルを削除する
ファイル操作/デフォルトのファイル文字コードを確認する
ファイル操作/デフォルトの改行コードを確認する
ファイル操作/ファイルかディレクトリかを確認する
ファイル操作/ファイルの削除
ファイル操作/ファイルを追記モード開き文字列を追加する
ファイル操作/ファイル・ディレクトリの有無(存在)確認
ファイル操作/ファイル一覧を標示する
プライバシーポリシー
変数操作
変数操作/メンバ変数の初期値はどのような値になっているか
変数操作/数値から文字列に変換するサンプルソース
変数操作/文字列から数値に変換するサンプルソース
数値操作
数値操作/数値をカンマ区切りで整形したい
数値操作/数値をカンマ区切りで整形し+記号を付けたい
数値操作/数値型の最大値・最小値
文字列操作
文字列操作/文字列が数字のみで構成されているかを確認する
文字列操作/文字列のリーバス(反転)
文字列操作/英字の大文字・小文字変換サンプル
日時操作
日時操作/DATEから年月日を抽出するサンプル
日時操作/うるう年のチェックを行う
最初にお読みください
標準入出力
標準入出力/STDOUTとSTDERRに出力する方法
標準入出力/パイプによるデータを受け取る方法
環境
環境/Eclipseで変数名なども補完できるようにする
環境/native2asciiで変換された文字列をもとに戻す
環境/UbuntuにaptコマンドでNetBeansをインストールしてみる
逆引きJavaサンプル
配列等操作
配列等操作/ArrayListのリバース(反転)サンプル
配列等操作/HashMapを使ったサンプル
#navi(../) * サブディレクトリ内を含むファイル一覧を取得するサンプル [#r2bbe61d] Javaで指定したディレクトリ内のファイル一覧を取得するサンプルソースです。~ 再帰呼出しにより、サブディレクトリ内のファイル一覧も取得します。 #contents * 関連記事 [#le93aeef] -[[ディレクトリ配下のファイルを削除するサンプル>ファイル操作/ディレクトリ配下のファイルを削除する]] * サンプルソース [#hd40c940] getFileList()メソッドを再帰呼出しすることにより、サブディレクトリ内のファイル一覧を取得しています。~ 尚、本サンプルプログラムは以下の引数を必要とします。 java RecursiveFileList ディレクトリ [サブディレクトリの深さ・省略可能] 使用例として以下のようになります。 java RecursiveFileList . 1 上記の例では、カレントディレクトリで深さ=1なので、サブディレクトリを検索しません。~ (lsやdirをオプションなしで実行した時と同じ動作になります。)~ java RecursiveFileList . 深さを指定しないと、カレントディレクトリ以下のファイルやディレクトリすべてを表示します。~ java RecursiveFileList . 2 カレントディレクトリとカレントディレクトリ内のサブフォルダ内ファイルまでが対象となります。 &ref(RecursiveFileList.java); LF import java.io.File; import java.util.List; import java.util.ArrayList; class RecursiveFileList { int depth; String directory; private static void usage() { System.err.println("Usage: java RecursiveFileList <path> [depth]"); System.exit(1); } private static boolean isNum(String v) { boolean b = true; try { Integer.parseInt(v); } catch (NumberFormatException e) { b = false; } return b; } private int getDepth() { return this.depth; } private void setDepth(int d) { this.depth = d; } private void setDirectory(String d) { this.directory = d; } private String getDirectory() { return this.directory; } private List<File> getFileList(String dir, List<File> fileList, int dirDepth) { File f = new File(dir); File[] fl = f.listFiles(); if (fl != null) { for (File item : fl) { fileList.add(item); if (item.isDirectory()) { if ((getDepth() > (dirDepth+1)) || (getDepth() == 0)) { getFileList(dir + System.getProperty("file.separator") + item.getName(), fileList, dirDepth+1); } } } } return fileList; } RecursiveFileList(String dir, int depth) { setDepth(depth); setDirectory(dir); } public static void main(String[] args) { int depth = 0; // check arguemnts if ((args.length !=1) && (args.length !=2)) { usage(); } // check numeric if (args.length == 2) { if (!isNum(args[1])) { System.err.println(args[1] +" is not numeric."); usage(); } if (Integer.parseInt(args[1]) < 0) { System.err.println("Please enter a number greater than 1."); usage(); } depth = Integer.parseInt(args[1]); // sub directory depth } // directory ? File f = new File(args[0]); if (!f.exists()) { // false System.out.println(args[0] + " directory is not found."); System.exit(2); } if (f.isFile()) { System.out.println(args[0] + " is file, Please set the directory."); System.exit(3); } if(!f.isDirectory()) { System.out.println(args[0] + " is unknown, Please set the directory."); System.exit(4); } RecursiveFileList me = new RecursiveFileList(args[0], depth); List<File> fileList = new ArrayList<File>(); me.getFileList(args[0], fileList, 0); for (File fitem : fileList) { System.out.println(fitem.getPath()); } } } * 実行結果 [#h8e81dc0] コンパイルして実行してみます。 - コンパイルします。 $ javac RecursiveFileList.java + 引数を指定しないと以下のようにUsageが表示されます。 $ java RecursiveFileList Usage: java RecursiveFileList <path> [depth] +テスト用のディレクトリを作成します。 $ mkdir -p dirA1/{dirA2-1,dirA2-2/dirA3} dirB1 $ tree . ├── RecursiveFileList.class ├── RecursiveFileList.java ├── dirA1 │ ├── dirA2-1 │ └── dirA2-2 │ └── dirA3 └── dirB1 5 directories, 2 files + テスト用のファイルを作成します。 $ touch dirA1/fileA1 dirA1/dirA2-1/fileA2-1 dirA1/dirA2-2/dirA3/{fileA3-1,filea3-2} $ tree . ├── RecursiveFileList.class ├── RecursiveFileList.java ├── dirA1 │ ├── dirA2-1 │ │ └── fileA2-1 │ ├── dirA2-2 │ │ └── dirA3 │ │ ├── fileA3-1 │ │ └── filea3-2 │ └── fileA1 └── dirB1 5 directories, 6 files + 実行してみます。 $ java RecursiveFileList . ./RecursiveFileList.class ./dirA1 ./dirA1/dirA2-1 ./dirA1/dirA2-1/fileA2-1 ./dirA1/fileA1 ./dirA1/dirA2-2 ./dirA1/dirA2-2/dirA3 ./dirA1/dirA2-2/dirA3/fileA3-1 ./dirA1/dirA2-2/dirA3/filea3-2 ./RecursiveFileList.java ./dirB1 #br $ java RecursiveFileList . 1 ./RecursiveFileList.class ./dirA1 ./RecursiveFileList.java ./dirB1 #br $ java RecursiveFileList . 2 ./RecursiveFileList.class ./dirA1 ./dirA1/dirA2-1 ./dirA1/fileA1 ./dirA1/dirA2-2 ./RecursiveFileList.java ./dirB1 以上、再帰呼出を使った指定したディレクトリ以下サブディレクトリ内ファイルを含む~ ファイルおよびディレクトリ一覧を表示するサンプルソースでした。
タイムスタンプを変更しない
#navi(../) * サブディレクトリ内を含むファイル一覧を取得するサンプル [#r2bbe61d] Javaで指定したディレクトリ内のファイル一覧を取得するサンプルソースです。~ 再帰呼出しにより、サブディレクトリ内のファイル一覧も取得します。 #contents * 関連記事 [#le93aeef] -[[ディレクトリ配下のファイルを削除するサンプル>ファイル操作/ディレクトリ配下のファイルを削除する]] * サンプルソース [#hd40c940] getFileList()メソッドを再帰呼出しすることにより、サブディレクトリ内のファイル一覧を取得しています。~ 尚、本サンプルプログラムは以下の引数を必要とします。 java RecursiveFileList ディレクトリ [サブディレクトリの深さ・省略可能] 使用例として以下のようになります。 java RecursiveFileList . 1 上記の例では、カレントディレクトリで深さ=1なので、サブディレクトリを検索しません。~ (lsやdirをオプションなしで実行した時と同じ動作になります。)~ java RecursiveFileList . 深さを指定しないと、カレントディレクトリ以下のファイルやディレクトリすべてを表示します。~ java RecursiveFileList . 2 カレントディレクトリとカレントディレクトリ内のサブフォルダ内ファイルまでが対象となります。 &ref(RecursiveFileList.java); LF import java.io.File; import java.util.List; import java.util.ArrayList; class RecursiveFileList { int depth; String directory; private static void usage() { System.err.println("Usage: java RecursiveFileList <path> [depth]"); System.exit(1); } private static boolean isNum(String v) { boolean b = true; try { Integer.parseInt(v); } catch (NumberFormatException e) { b = false; } return b; } private int getDepth() { return this.depth; } private void setDepth(int d) { this.depth = d; } private void setDirectory(String d) { this.directory = d; } private String getDirectory() { return this.directory; } private List<File> getFileList(String dir, List<File> fileList, int dirDepth) { File f = new File(dir); File[] fl = f.listFiles(); if (fl != null) { for (File item : fl) { fileList.add(item); if (item.isDirectory()) { if ((getDepth() > (dirDepth+1)) || (getDepth() == 0)) { getFileList(dir + System.getProperty("file.separator") + item.getName(), fileList, dirDepth+1); } } } } return fileList; } RecursiveFileList(String dir, int depth) { setDepth(depth); setDirectory(dir); } public static void main(String[] args) { int depth = 0; // check arguemnts if ((args.length !=1) && (args.length !=2)) { usage(); } // check numeric if (args.length == 2) { if (!isNum(args[1])) { System.err.println(args[1] +" is not numeric."); usage(); } if (Integer.parseInt(args[1]) < 0) { System.err.println("Please enter a number greater than 1."); usage(); } depth = Integer.parseInt(args[1]); // sub directory depth } // directory ? File f = new File(args[0]); if (!f.exists()) { // false System.out.println(args[0] + " directory is not found."); System.exit(2); } if (f.isFile()) { System.out.println(args[0] + " is file, Please set the directory."); System.exit(3); } if(!f.isDirectory()) { System.out.println(args[0] + " is unknown, Please set the directory."); System.exit(4); } RecursiveFileList me = new RecursiveFileList(args[0], depth); List<File> fileList = new ArrayList<File>(); me.getFileList(args[0], fileList, 0); for (File fitem : fileList) { System.out.println(fitem.getPath()); } } } * 実行結果 [#h8e81dc0] コンパイルして実行してみます。 - コンパイルします。 $ javac RecursiveFileList.java + 引数を指定しないと以下のようにUsageが表示されます。 $ java RecursiveFileList Usage: java RecursiveFileList <path> [depth] +テスト用のディレクトリを作成します。 $ mkdir -p dirA1/{dirA2-1,dirA2-2/dirA3} dirB1 $ tree . ├── RecursiveFileList.class ├── RecursiveFileList.java ├── dirA1 │ ├── dirA2-1 │ └── dirA2-2 │ └── dirA3 └── dirB1 5 directories, 2 files + テスト用のファイルを作成します。 $ touch dirA1/fileA1 dirA1/dirA2-1/fileA2-1 dirA1/dirA2-2/dirA3/{fileA3-1,filea3-2} $ tree . ├── RecursiveFileList.class ├── RecursiveFileList.java ├── dirA1 │ ├── dirA2-1 │ │ └── fileA2-1 │ ├── dirA2-2 │ │ └── dirA3 │ │ ├── fileA3-1 │ │ └── filea3-2 │ └── fileA1 └── dirB1 5 directories, 6 files + 実行してみます。 $ java RecursiveFileList . ./RecursiveFileList.class ./dirA1 ./dirA1/dirA2-1 ./dirA1/dirA2-1/fileA2-1 ./dirA1/fileA1 ./dirA1/dirA2-2 ./dirA1/dirA2-2/dirA3 ./dirA1/dirA2-2/dirA3/fileA3-1 ./dirA1/dirA2-2/dirA3/filea3-2 ./RecursiveFileList.java ./dirB1 #br $ java RecursiveFileList . 1 ./RecursiveFileList.class ./dirA1 ./RecursiveFileList.java ./dirB1 #br $ java RecursiveFileList . 2 ./RecursiveFileList.class ./dirA1 ./dirA1/dirA2-1 ./dirA1/fileA1 ./dirA1/dirA2-2 ./RecursiveFileList.java ./dirB1 以上、再帰呼出を使った指定したディレクトリ以下サブディレクトリ内ファイルを含む~ ファイルおよびディレクトリ一覧を表示するサンプルソースでした。
テキスト整形のルールを表示する
添付ファイル:
RecursiveFileList.java
564件
[
詳細
]