File クラス

ファイルの作成、コピー、削除、移動、オープンのための静的メソッドを提供し、 FileStream オブジェクトの作成を支援します。

この型のすべてのメンバの一覧については、File メンバ を参照してください。

System.Object
   System.IO.File

NotInheritable Public Class File
[C#]
public sealed class File
[C++]
public __gc __sealed class File
[JScript]
public class File

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

File クラスは、ファイルのコピー、移動、名前変更、作成、オープン、削除、内容の追加などの一般的な操作に使用します。 File クラスは、ファイルの作成、ファイルへのアクセス、およびファイルへの書き込みに関連した DateTime 情報、およびファイル属性の取得と設定にも使用できます。

File のメソッドの多くは、ファイルを作成またはオープンしたときにそれぞれに異なる I/O 型を返します。これらの型は、以降のファイル操作に使用できます。詳細については、 OpenTextCreateTextCreate などの具体的な File メンバのトピックを参照してください。

File のメソッドはすべて静的であるため、作を実行するだけであれば、 File メソッドを使用する方が、対応する FileInfo インスタンスのメソッドを使用するよりも効率的な場合があります。 File メソッドはすべて、操作するファイルのパスを必要とします。

File クラスの静的メソッドは、すべてのメソッドでセキュリティ チェックを実行します。オブジェクトを何回か再利用する場合は、このようなセキュリティ チェックが必ずしも必要ではなくなるため、これらの静的メソッドの代わりに FileInfo の対応するインスタンス メソッドを使用することを検討してください。

既定では、すべてのユーザーに、新しいファイルに対する完全な読み書きアクセス権が与えられます。

さまざまな File メソッドの動作をカスタマイズするために使用する列挙体を次の表に示します。

列挙体 説明
FileAccess ファイルへの読み取りと書き込みのアクセスを指定します。
FileShare 既に使用中のファイルに対するアクセス許可レベルを指定します。
FileMode 既存のファイルの内容を保持または上書きするか、既存のファイルの作成要求が例外となるかどうかを指定します。

メモ   入力文字列としてパスを受け入れるメンバでは、そのパスが正しい書式である必要があります。それ以外の場合は、例外が発生します。たとえば、パスが絶対パスであっても空白で始まっている場合、そのパスはクラスのメソッドではトリムされません。このため、パスが正しい書式にならず、例外が発生します。同様に、1 つのパスまたは複数のパスの組み合わせを絶対パスとして 2 度指定することはできません。たとえば、"c:\temp c:\windows" でも、ほとんどの場合において例外が発生します。パス文字列を受け入れるメソッドを使用するときは、パスが適切な書式であることを確認します。

パスを受け入れるメンバでは、ファイルまたはディレクトリを参照するパスを指定できます。指定するパスは、相対パス、またはサーバーおよび共有名を示す UNC (Universal Naming Convention) パスにすることができます。たとえば、次に示すパスはすべて有効なパスです。

  • C# では "c:\\MyDir\\MyFile.txt"、Visual Basic では "c:\MyDir\MyFile.txt"。
  • C# では "c:\\MyDir"、Visual Basic では "c:\MyDir"。
  • C# では "MyDir\\MySubdir"、Visual Basic では "MyDir\MySubDir"。
  • C# では "\\\\MyServer\\MyShare"、Visual Basic では "\\MyServer\MyShare"。

このクラスの使用例については、以下の「使用例」を参照してください。その他の一般的な I/O タスクまたは関連する I/O タスクの例を次の表に示します。

実行するタスク 参考例があるトピック
テキスト ファイルを作成する。 ファイルへのテキストの書き込み
テキスト ファイルに書き込む。 ファイルへのテキストの書き込み
テキスト ファイルから読み取る。 ファイルからのテキストの読み取り
テキストをファイルに追加する。 ログ ファイルのオープンと追加

File.AppendText

FileInfo.AppendText

ファイルの名前を変更、またはファイルを移動する。 File.Move

FileInfo.MoveTo

ファイルを削除する。 File.Delete

FileInfo.Delete

ファイルをコピーする。 File.Copy

FileInfo.CopyTo

ファイルのサイズを取得する。 FileInfo.Length
ファイルの属性を取得する。 File.GetAttributes
ファイルの属性を設定する。 File.SetAttributes
ファイルが存在するかどうかを判別する。 File.Exists
バイナリ ファイルから読み取る。 新しく作成したデータ ファイルの読み取りと書き込み
バイナリ ファイルに書き込む。 新しく作成したデータ ファイルの読み取りと書き込み
ファイルの拡張子を取得する。 Path.GetExtension
ファイルの絶対パスを取得する。 Path.GetFullPath
パスからファイル名と拡張子を取得する。 Path.GetFileName
ファイルの拡張子を変更する。 Path.ChangeExtension

使用例

[Visual Basic, C#, C++] File クラスの主要なメンバの例を次に示します。

 
Imports System
Imports System.IO

Public Class Test
    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        If File.Exists(path) = False Then
            ' Create a file to write to.
            Dim sw As StreamWriter = File.CreateText(path)
            sw.WriteLine("Hello")
            sw.WriteLine("And")
            sw.WriteLine("Welcome")
            sw.Flush()
            sw.Close()
        End If

        Try
            ' Open the file to read from.
            Dim sr As StreamReader = File.OpenText(path)
            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
            sr.Close()
            Dim path2 As String = path + "temp"

            ' Ensure that the target does not exist.
            File.Delete(path2)

            ' Copy the file.
            File.Copy(path, path2)
            Console.WriteLine("{0} was copied to {1}.", path, path2)

            ' Delete the newly created file.
            File.Delete(path2)
            Console.WriteLine("{0} was successfully deleted.", path2)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.ToString())
        End Try
    End Sub
End Class

[C#] 
using System;
using System.IO;

class Test 
{
    public static void Main() 
    {
        string path = @"c:\temp\MyTest.txt";
        if (!File.Exists(path)) 
        {
            // Create a file to write to.
            using (StreamWriter sw = File.CreateText(path)) 
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }    
        }

        // Open the file to read from.
        using (StreamReader sr = File.OpenText(path)) 
        {
            string s = "";
            while ((s = sr.ReadLine()) != null) 
            {
                Console.WriteLine(s);
            }
        }

        try 
        {
            string path2 = path + "temp";
            // Ensure that the target does not exist.
            File.Delete(path2);

            // Copy the file.
            File.Copy(path, path2);
            Console.WriteLine("{0} was copied to {1}.", path, path2);

            // Delete the newly created file.
            File.Delete(path2);
            Console.WriteLine("{0} was successfully deleted.", path2);
        } 
        catch (Exception e) 
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::IO;

int main() {
    String* path = S"c:\\temp\\MyTest.txt";
    if (!File::Exists(path)) {
        // Create a file to write to.
        StreamWriter* sw = File::CreateText(path);
        try {
            sw->WriteLine(S"Hello");
            sw->WriteLine(S"And");
            sw->WriteLine(S"Welcome");
        } __finally {
            if (sw) __try_cast<IDisposable*>(sw)->Dispose();
        }
    }

    // Open the file to read from.
    StreamReader* sr = File::OpenText(path);
    try {
        String* s = S"";
        while (s = sr->ReadLine()) {
            Console::WriteLine(s);
        }
    } __finally {
        if (sr) __try_cast<IDisposable*>(sr)->Dispose();
    }

    try {
        String* path2 = String::Concat(path, S"temp");
        // Ensure that the target does not exist.
        File::Delete(path2);

        // Copy the file.
        File::Copy(path, path2);
        Console::WriteLine(S"{0} was copied to {1}.", path, path2);

        // Delete the newly created file.
        File::Delete(path2);
        Console::WriteLine(S"{0} was successfully deleted.", path2);
    } catch (Exception* e) {
        Console::WriteLine(S"The process failed: {0}", e);
    }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.IO

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: Mscorlib (Mscorlib.dll 内)

参照

File メンバ | System.IO 名前空間 | 入出力操作 | ファイルからのテキストの読み取り | ファイルへのテキストの書き込み | 基本のファイル I/O | 新しく作成したデータ ファイルの読み取りと書き込み