top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
ちょっと必要に駆られてディレクトリ鳥瞰ツールを作ってみました。J2EE 1.3.1 がリリースです!
昨日の静岡出張は疲れました。結合テストだったのですが、どたばたで 静岡駅的に最終のひかり号で帰ってくる羽目に遭いました。さらに 充実感が無かっただけに 疲れ倍増。入力データの不備にて こっちは本来の目的の作業が出来ず。
ざざっとディレクトリを鳥瞰するツールを自作してみました。さしあたり日付で比較して 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;
}
}
}
.