top / index / prev / next / target / source

2002-02-01 diary: ディレクトリ鳥瞰ツール , J2EE 1.3.1 リリース

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

ディレクトリ鳥瞰ツール , J2EE 1.3.1 リリース

ちょっと必要に駆られてディレクトリ鳥瞰ツールを作ってみました。J2EE 1.3.1 がリリースです!

世間のニュースから () 2002

昨日の静岡出張は疲れました

昨日の静岡出張は疲れました。結合テストだったのですが、どたばたで 静岡駅的に最終のひかり号で帰ってくる羽目に遭いました。さらに 充実感が無かっただけに 疲れ倍増。入力データの不備にて こっちは本来の目的の作業が出来ず。

ディレクトリ鳥瞰ツールの自作

ざざっとディレクトリを鳥瞰するツールを自作してみました。さしあたり日付で比較して 24時間以内に更新されたファイルをレポートする機能を付けてみています。いろいろ機能追加できそうでおもしろそうです。(それをGNUツールではなく自作するのが私らしくて良いです)

/**
 * ディレクトリ鳥瞰プログラム
 * Copyright (C) 2002  Tosiki IGA
 *
 *   @author Tosiki IGA
 *   @version 2002.02.01
 *   (http://homepage2.nifty.com/igat/igapyon/index.html)
 * 
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 * 
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

import java.io.*;
import java.util.*;

public class DirView
{
        public static final int HOUR=24;

        public static void main(String[] args)
        {
                if(args.length==0){
                        System.out.println("鳥瞰したいディレクトリ名を入力してください");
                        System.out.println("ex: java DirView [ディレクトリ名]");
                        System.out.println(" 本当は、鳥瞰以外の各種機能が欲しい");
                        System.exit(-1);
                }
                File fileLook=new File(args[0]);
                if(fileLook.exists()==false){
                        System.out.println("指定のディレクトリ["+args[0]+"]が見つかりませんでした.");
                        System.exit(-2);
                }else if(fileLook.isDirectory()==false){
                        System.out.println("指定のディレクトリ名["+args[0]+"]は妥当ではありません.");
                        System.exit(-3);
                }
                try{
                        new DirView().process(fileLook);
                }catch(IOException ex){
                        System.out.println(ex.toString());
                }
        }

        String strRoot="";
        int iTotalFileCount=0;
        ArrayList listFiles=new ArrayList();

        protected void process(File fileLook)
                throws IOException
        {
                strRoot=fileLook.getAbsolutePath();
                System.out.println("基準ディレクトリ:"+strRoot);

                processDirectory(fileLook);
                System.out.println("ファイル数:"+iTotalFileCount);

                java.util.Collections.sort(listFiles,new java.util.Comparator(){
                        public int compare(Object obj1, Object obj2)
                        {
                                File arg1=(File)obj1;
                                File arg2=(File)obj2;
                                return arg1.lastModified()>arg2.lastModified()?-1:1;
                        }
                });

                report();
        }

        protected void processDirectory(File fileLook)
                throws IOException
        {
                File[] fileDirs=fileLook.listFiles();
                for(int index=0;index<fileDirs.length;index++){
                        if(fileDirs[index].isDirectory()){
                                processDirectory(fileDirs[index]);
                        }else{
                                processFile(fileDirs[index]);
                        }
                }
        }

        protected void processFile(File fileLook)
                throws IOException
        {
                iTotalFileCount++;
                listFiles.add(fileLook);
        }

        protected void report()
        {
                Date dateNow=new Date();
                for(int index=0;index<listFiles.size();index++){
                        File fileLook=(File)listFiles.get(index);
                        if(dateNow.getTime()-fileLook.lastModified()>1000*60*60*HOUR)break;
                        System.out.println(getDiff(fileLook.lastModified()-dateNow.getTime())+":"+fileLook.getAbsolutePath().substring(strRoot.length()+1));
                }
        }

        protected static String getDiff(long lDiff)
        {
                String strSuffix="後";
                if(lDiff<0){
                        lDiff=(-lDiff);
                        strSuffix="前";
                }
                if(lDiff<60*1000){
                        return ""+(lDiff/1000)+"秒"+strSuffix;
                }else if(lDiff<60*60*1000){
                        return ""+(lDiff/60/1000)+"分"+strSuffix;
                }else if(lDiff<24*60*60*1000){
                        return ""+(lDiff/60/60/1000)+"時"+strSuffix;
                }else{
                        return ""+(lDiff/24/60/60/1000)+"日"+strSuffix;
                }
        }
}

.

世間のニュースから () 2002


この日記について