JScript.NET  新JavaScript入門  JavaScript,Neo-Generation  DOM  WSH  掲示板  表紙
Written 8/7/03
JScript.NET
File System
ファイル
ファイルのプロパティを得るには次のように FileInfoクラスを使ってください 詳しくは、FileInfo メンバ(MS)参照。
    import System;
    import System.IO;
    
    //ファイル名を引数にコンストラクト
    var file : FileInfo = new FileInfo("stringbuilder.js");
    print(file.Exists);
    print(file.CreationTime);
    print(file.LastWriteTime);
    print(file.LastAccessTime);
    print(file.Directory);
    print(file.DirectoryName);
    print(file.FullName);
    print(file.Name);
    print(file.Extension);
 
上のプロパティはだいたい解説なしでよいと思います。
    print(file.Attributes);
    print(file.Length);
 
AttributesFileAttributes列挙体の値を取ります。 この列挙体はArchive Directory Hiddenなどの値を取ります (FileAttributes 列挙体(MS))。
    file.Attributes = FileAttributes.Hidden;
 
とすれば、このファイルは隠しファイルになります。
Lengthはファイルサイズを表します。
いくつかのメソッドも紹介しましょう。
    file.CopyTo("ss.js");    //ss.jsという名前でファイルをコピー
    file.MoveTo("sss.js");   //リネーム
    file.Delete();           //削除
 
MoveTo は引数によってはディレクトリを移動することもできます。
    file.MoveTo("..\\ss.js");    
 
ディレクトリ
ディレクトリはDirectoryInfoというクラスを使います。
プロパティはFileInfoとほぼ同じなので1つ以外省略します。
    var dir : DirectoryInfo = new DirectoryInfo(".");
    print(dir.LastWriteTime);
 
サブディレクトリを作るには次のようにディレクトリ名をします。
    dir.CreateSubdirectory("ZYX");
 
一度に深い階層のディレクトリを作ることもできます。
    dir.CreateSubdirectory("ZYX\\FLY\\HIGH");
 
スキャン
DirectoryInfoのGetDirectoriesGetFilesによって、 そのディレクトリの直下にあるディレクトリとファイルを列挙することができます。 これを再帰的に用いることによりファイルシステムをスキャンできます。
    du.js
    ----------------------------------------------------------------------
    var dirname : String;
    
    var args : String[] = Environment.GetCommandLineArgs();
    //引数無しならカレントディレクトリをスキャン
    //そうでなければ全ての引数が表すディレクトリをスキャン
    if(args.length == 1)
        getDirectorySize(new DirectoryInfo("."));
    else {
        for(var i = 1; i < args.length; i++) {
            var dir : DirectoryInfo = new DirectoryInfo(args[i]);
            if(!dir.Exists)
                System.Console.Error.WriteLine(args[i] + " : not found.");
            else
                getDirectorySize(dir);
        }
    }
    
    //ディレクトリのサイズを返す
    function getDirectorySize(d : DirectoryInfo) : long {
        var size : long = 0;
        //サブディレクトリのサイズを加算
        var ds : DirectoryInfo[] = d.GetDirectories();
        for(var i = 0; i < ds.length; i++)
            size += getDirectorySize(ds[i]);
        //ファイルのサイズを加算
        var fs : FileInfo[] = d.GetFiles();
        for(i = 0; i < fs.length; i++)
            size += fs[i].Length;
        //ディレクトリごとにサイズとフルパスを出力
        System.Console.WriteLine(
                    "{0,8:D}kB {1}", long(size / 1024), d.FullName);
        return size;
    }
 
指定したディレクトリとそれ以下のディレクトリのサイズが列挙されます。
    var ds : DirectoryInfo[] = d.GetDirectories();
 
は、サブディレクトリをDirectoryInfoの配列として返します。
    var fs : FileInfo[] = d.GetFiles();
 
は、直下のファイルをFileInfoの配列として返します。
exit