ファイルのプロパティを得るには次のように
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);
Attributesは
FileAttributes列挙体の値を取ります。
この列挙体は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の
GetDirectoriesと
GetFilesによって、
そのディレクトリの直下にあるディレクトリとファイルを列挙することができます。
これを再帰的に用いることによりファイルシステムをスキャンできます。
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の配列として返します。