便利なコードパーツ集!

やまろうのプログラミングTips

Java

[Java] ディレクトリ探索で再起

投稿日:2016年12月6日 更新日:

やまろうのJavaなわけ
2003/01/22
Vol.1 ディレクトリ探索で再起再起!!

どうもー、やまろうでぃーす。
メールマガジン始めてみました。
僕は現在ある政府機関のWebアプリケーション開発に参加してます。
そこで日々学んだことなどをお送りしたいと思います。

このメルマガはメルマガ自体をそのままコンパイル出来ます。
(文章部分はコメントにしているので)
なので読んで、そのまま、なんたら.javaってファイルに保存して、
コンパイル・実行が出来るのです!で、内容は毎回一つの
サンプルプログラムについて、ああだ、こうだと言ってくものです。
その中で、J2SEからJ2EE、オープンソースのライブラリ等、
さまざまなものを使っていきます。
そして、オブジェクト指向プログラミングの要素も入れていきます。
なので、読んでいく内に自然とオブジェクト指向の考え方が分かるように
なると思います。そんなわけで、よろしくお願いしまーす。

で、今回はディレクトリ探索です。最近僕が気に入ってる処理
なのですが、ディレクトリ名を渡すとその配下にあるファイルを
全部走査するってやつです。「この下にあるファイルのコメントを
全部置き換えたいんだよなー」
っとかの時にそれを一気に
プログラムにやらすことが出来るわけです!
それではソースを見て下さい。

package dir;

import java.io.*;

class DirSearch {

  /* 引数のディレクトリ配下のファイルを出力する */
  public static void main(String[] args) {
    File file = new File(args[0]);
    searchDir(file);
  }
  
  private static void searchDir(File dir) {
    File[] files = dir.listFiles();            // (1)
    for (int i = 0; i < files.length; i++) {   // (2)
      File file = files[i];                    // (3)
      if (file.isDirectory()) {                // (4)
        searchDir(file);                       // (5)
      } else {                                 // (6)
        p(file.getName());                     // (7)
      }                                        // (8)
    }                                          // (9)
                                               // (10)
  }
  private static void p(String s) {
    System.out.println(s);
  }
}

(1)で引数で渡されたファイルオブジェクト(ディレクトリ)から
ファイル一覧を取得します。
(2)で一覧をループでまわして、1ファイルずつ処理します。
(4)でファイルがディレクトリか調査して、ディレクトリだった場合
(5)でsearchDirメソッドを再起的に呼び出す、
で、ディレクトリじゃない場合
(7)でファイル名を出力してます。ここでそのファイルを
開いて置き換えとか編集なんかのファイル処理をすると
とっても便利なプログラムの出来上がりってわけです。

では実行してみましょう!
このメルマガをDirSearch.javaという名前で保存して

DOSプロンプトで
javac -d . DirSearch.java

Windows 98系を使ってる方は
java dir.DirSearch "C:\\windows\\Favorites"

Windows NT系を使ってる方は
java dir.DirSearch "C:\Documents and Settings\Administrator\Favorites"

Administratorでログインしてない方は自分のユーザーのFavoritesフォルダを
指定して下さい。まぁ、とにかく、なんらかのフォルダをフルパスで引数に
渡してくれれば動きます。

実行結果

RealPlayer のホームページ.url
Yahoo! JAPAN.url
JustNetTop.url
goo[グー].url
MSN.url
LYCOS Japan.url
Yahoo! Auctions オークション.url

ってなわけです。
お気に入りに登録したファイルが出力されるはずです。
いかがわしいサイトとか登録してあると人に見せられないですぜ!!

んじゃ!!

スポンサーリンク

-Java

Copyright© やまろうのプログラミングTips , 2022 AllRights Reserved Powered by AFFINGER4.