ファイル一覧づくり。

呼び出すとカレントディレクトリのファイル一覧と、一番古いファイルの情報を返す。

動作例

$ java -jar ~/NetBeansProjects/timestamper/dist/timestamper.jar
web2epub.rb2012/12/09 13:51:29 JST
txt2ruby.rb2012/11/27 8:43:37 JST
rsstalk.rb2012/10/27 8:54:12 JST
openjtalk.rb2011/11/25 21:36:04 JST
txt2kunten.rb2012/11/26 14:42:15 JST
open_jtalk.rb2012/10/27 7:58:04 JST
open_jtalk2.rb2011/11/25 21:36:04 JST
secondlife.rb2011/10/16 15:04:00 JST
ファイル総数:8
もっとも古いファイル:secondlife.rb(2011/10/16 15:04:00 JST)
$

プログラムリスト

ふう。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package timestamper;

import java.io.File;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * ファイル一覧を取得してタイムスタンプを返す。ただそれだけ。
 * @author hachikun
 */
public class Timestamper {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ArrayList<String> d = DirList(".");
        String oldername = "";
        long oldertime = -1;
        for(int i=0;i<d.size();i++){
            long l = readLastModified(d.get(i));
            if(oldertime == -1){
                oldertime = l;
            }else{
                if(oldertime > l){
                    oldertime = l;
                    oldername = d.get(i);
                }
            }
            System.out.println(d.get(i) + "\t" + time2asctime(l));
        }
        System.out.println("ファイル総数:"+d.size());
        System.out.println("もっとも古いファイル:"+oldername+"("+time2asctime(oldertime)+")");
    }

    private static String time2asctime(long i){
        Date d = new Date(i);
        DateFormat df=DateFormat.getDateTimeInstance
(DateFormat.LONG,DateFormat.LONG);
        return(df.format(d));
    }

    private static long readLastModified(String fn){
        File f = new File(fn);
        long r = f.lastModified();
        return r;
    }

    private static ArrayList DirList(String path) {
        //返り値は配列で
        ArrayList<String> pats = new ArrayList<String>();
        //パス名のオブジェクト化
        File dir = new File(path);
        //ディレクトリかどうか判定
        if (!dir.isDirectory()) {
            System.out.println("ディレクトリではないか、"
                    + "または存在しません。");
        } else {
            //再帰的リスト
            String[] contents = dir.list();
            Pattern pattern = Pattern.compile(".+rb$");
            for (int i = 0; i < contents.length; i++) {
                Matcher matcher = pattern.matcher(contents[i]);
                //boolean b= matcher.matches();
                if (matcher.matches() == true) {
                    //System.out.println(contents[i]);
                    pats.add(contents[i]);
                }
            }
        }
        return pats;
    }

}