ファイルの操作
ファイルの操作には、次の 2 つの主要なカテゴリがあります。
- データの作成、追加、または削除、およびファイルの読み取り
- ファイルの移動、コピー、および削除
ファイルを作成する
空のテキスト ファイル ("テキスト ストリーム" とも呼ばれます) を作成する方法は 3 つあります。
第一の方法では、CreateTextFile メソッドを使います。次の例は、このCreateTextFileMethodメソッドを使ってテキスト ファイルを作成する方法を示します。
Dim fso, f1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
[JScript]
var fso, f1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
第二の方法では、ForWriting フラグを設定した状態で FileSystemObject オブジェクトの OpenTextFile メソッドを使用します。
Dim fso, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting. FileSystemObject")
Set ts = fso.OpenTextFile("c:\test.txt", ForWriting, True)
[JScript]
var fso, ts;
var ForWriting= 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
ts = fso.OpenTextFile("c:\\test.txt", ForWriting, true);
第三の方法では、ForWriting フラグを設定した状態で OpenAsTextStream メソッドを使用します。
Dim fso, f1, ts
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("c:\test1.txt")
Set f1 = fso.GetFile("c:\test1.txt")
Set ts = f1.OpenAsTextStream(ForWriting, True)
[JScript]
var fso, f1, ts;
var ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CreateTextFile ("c:\\test1.txt");
f1 = fso.GetFile("c:\\test1.txt");
ts = f1.OpenAsTextStream(ForWriting, true);
ファイルにデータを追加する
テキスト ファイルが作成されたら、次の手順でファイルにデータを追加してください。
テキスト ファイルを開きます。
データを書き込みます。
テキスト ファイルを閉じます。
既存のファイルを開くには、FileSystemObject オブジェクトの OpenTextFile メソッドか、または File オブジェクトの OpenAsTextStream メソッドを使用します。
開いたテキスト ファイルにデータを書き込むには、次の表に示された処理に基づき、TextStream オブジェクトの Write、WriteLine、WriteBlankLines メソッドのいずれかを使用します。
処理 | メソッド |
---|---|
改行文字を末尾に付けないで、テキスト ファイルにデータを書き込む | Write |
改行文字を末尾に付けて、テキスト ファイルにデータを書き込む | WriteLine |
1 行以上の空白行をテキスト ファイルに書き込む | WriteBlankLines |
ファイルを閉じるには、TextStream オブジェクトの Close メソッドを使用します。
メモ 改行文字は、次の行頭にカーソルを進める (キャリッジ リターンまたは行送り) ための文字です。改行文字の個数は、オペレーティング システムによって異なります。このような印刷されない文字が、既に文字列に含まれていることもあります。
次の例は、ファイルを開き、3 つの write メソッドをすべて使用してデータを追加し、ファイルを閉じる方法を示します。
Sub CreateFile()
Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile("c:\testfile.txt", True)
'改行文字を付けて 1 行書き込みます。
tf.WriteLine("1、2、3 をテストしています。")
' ファイルに改行文字を 3 つ書き込みます。
tf.WriteBlankLines(3)
'1 行書き込みます。
tf.Write ("これはテストです。")
tf.Close
End Sub
[JScript]
function CreateFile()
{
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\\testfile.txt", true);
// 改行文字を付けて 1 行書き込みます。
tf.WriteLine("1、2、3 をテストしています。") ;
/// ファイルに改行文字を 3 つ書き込みます。
tf.WriteBlankLines(3) ;
// 1 行書き込みます。
tf.Write ("これはテストです。");
tf.Close();
}
ファイルを読み取る
テキスト ファイルからデータを読み取るには、TextStream オブジェクトの Read、ReadLine、ReadAll メソッドのいずれかを使用します。次の表は、各種の処理に使用されるメソッドを示します。
処理 | メソッド |
---|---|
指定された個数の文字をファイルから読み取る | Read |
改行文字直前まで 1 行全体を読み取る | ReadLine |
テキスト ファイルの内容をすべて読み取る | ReadAll |
Read メソッドまたは ReadLine メソッドを使用する場合、データの特定個所をスキップするには、Skip メソッドまたは SkipLine メソッドを使用します。"read" メソッドで読み取ったテキストは、コントロールに表示できる文字列として保存され、Left、Right、Mid などの文字列関数によって解析され、連結されたり、その他の処理が行われます。
次の例は、ファイルを開き、データを書き込んで読み出す方法を示します。
Sub ReadFiles
Dim fso, f1, ts, s
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
'1 行書き込みます。
Response.Write "ファイルを書き込んでいます。<BR>"
f1.WriteLine "Hello World"
f1.WriteBlankLines(1)
f1.Close
' ファイルの内容を読み取ります。
Response.Write "ファイルを読み取っています。<BR>"
Set ts = fso.OpenTextFile("c:\testfile.txt", ForReading)
s = ts.ReadLine
Response.Write "ファイルの内容 = '" & s & "'"
ts.Close
End Sub
[JScript]
function ReadFiles()
{
var fso, f1, ts, s;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
// 1 行書き込みます。
Response.Write("ファイルに書き込んでいます。<BR>");
f1.WriteLine("Hello World");
f1.WriteBlankLines(1);
f1.Close();
// ファイルの内容を読み取ります。
Response.Write("ファイルを読み取っています。<BR>");
ts = fso.OpenTextFile("c:\\testfile.txt", ForReading);
s = ts.ReadLine();
Response.Write("ファイルの内容 = '" + s + "'");
ts.Close();
}
ファイルを移動、コピー、および削除する
次の表のように、FSO オブジェクト モデルには、ファイルを移動、コピー、および削除する方法が 2 つずつあります。
処理 | メソッド |
---|---|
ファイルを移動する | File.Move または FileSystemObject.MoveFile |
ファイルをコピーする | File.Copy または FileSystemObject.CopyFile |
ファイルを削除する | File.Delete または FileSystemObject.DeleteFile |
次の VBScript の例では、ドライブ C のルート ディレクトリに作成したテキスト ファイルに情報を書き込み、そのファイルを \tmp ディレクトリに移動し、ファイルのコピーを \temp ディレクトリに作成した後、両方のディレクトリからコピーを削除しています。
次の例を実行するには、\tmp ディレクトリおよび \temp ディレクトリをドライブ C: のルート ディレクトリに作成します。
Sub ManipFiles
Dim fso, f1, f2, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.CreateTextFile("c:\testfile.txt", True)
Response.Write "ファイルを書き込んでいます。<BR>"
'1 行書き込みます。
f1.Write ("これはテストです。")
' ファイルを閉じます。
f1.Close
Response.Write "c:\tmp にファイルを移動しています。<BR>"
' C:\ のルートにあるファイルへのハンドルを取得します。
Set f2 = fso.GetFile("c:\testfile.txt")
' \tmp ディレクトリにファイルを移動します。
f2.Move ("c:\tmp\testfile.txt")
Response.Write "c:\temp にファイルをコピーしています。<BR>"
' \temp にファイルをコピーします。
f2.Copy ("c:\temp\testfile.txt")
Response.Write "ファイルを削除しています。<BR>"
' ファイルの現在の位置へのハンドルを取得します。
Set f2 = fso.GetFile("c:\tmp\testfile.txt")
Set f3 = fso.GetFile("c:\temp\testfile.txt")
' ファイルを削除します。
f2.Delete
f3.Delete
Response.Write "完了しました !"
End Sub
[JScript]
function ManipFiles()
{
var fso, f1, f2, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f1 = fso.CreateTextFile("c:\\testfile.txt", true);
Response.Write("ファイルに書き込んでいます。<BR>");
// 1 行書き込みます。
f1.Write("これはテストです。");
/ ファイルを閉じます。
f1.Close();
Response.Write("c:\\tmp にファイルを移動しています。<BR> ");
// C:\ のルートにあるファイルへのハンドルを取得します。
f2 = fso.GetFile("c:\\testfile.txt");
// \tmp ディレクトリにファイルを移動します。
f2.Move ("c:\\tmp\\testfile.txt");
Response.Write("c:\\temp にファイルをコピーしています。<BR>");
// \temp にファイルをコピーします。
f2.Copy ("c:\\temp\\testfile.txt");
Response.Write("ファイルを削除しています。<BR>");
// ファイルの現在の位置へのハンドルを取得します。
f2 = fso.GetFile("c:\\tmp\\testfile.txt");
f3 = fso.GetFile("c:\\temp\\testfile.txt");
// ファイルを削除します。
f2.Delete();
f3.Delete();
Response.Write("完了しました !");
}