ファイルの操作

ファイルの操作には、次の 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("完了しました !");
    }