FileInfo クラス

ファイルを作成、コピー、削除、移動、および開くためのインスタンス メソッドを提供し、 FileStream オブジェクトを作成できるようにします。

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

System.Object
   System.MarshalByRefObject
      System.IO.FileSystemInfo
         System.IO.FileInfo

<Serializable>
NotInheritable Public Class FileInfo   Inherits FileSystemInfo
[C#]
[Serializable]
public sealed class FileInfo : FileSystemInfo
[C++]
[Serializable]
public __gc __sealed class FileInfo : public FileSystemInfo
[JScript]
public
   Serializable
class FileInfo extends FileSystemInfo

スレッドセーフ

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

解説

FileInfo クラスは、ファイルのコピー、移動、名前変更、作成、オープン、削除、内容の追加などの一般的な操作に使用します。

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

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

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

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

列挙体 説明
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

.NET Compact Framework - Windows CE .NET プラットフォームに関する注意点: .NET Compact Framework では、ディレクトリ属性の取得と設定はサポートされていません。

使用例

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

 
Imports System
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path As String = "c:\temp\MyTest.txt"
        Dim path2 As String = path + "temp"
        Dim fi As FileInfo = New FileInfo(path)

        If fi.Exists = False Then
            'Create a file to write to.
            Dim sw As StreamWriter = fi.CreateText()

            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 = fi.OpenText()

            Do While sr.Peek() >= 0
                Console.WriteLine(sr.ReadLine())
            Loop
            sr.Close()
            Dim fi2 As FileInfo = New FileInfo(path2)

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

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

            'Delete the newly created file.
            fi2.Delete()
            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";
        FileInfo fi1 = new FileInfo(path);

        if (!fi1.Exists) 
        {
            //Create a file to write to.
            using (StreamWriter sw = fi1.CreateText()) 
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }    
        }

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

        try 
        {
            string path2 = path + "temp";
            FileInfo fi2 = new FileInfo(path2);

            //Ensure that the target does not exist.
            fi2.Delete();

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

            //Delete the newly created file.
            fi2.Delete();
            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";
    FileInfo* fi1 = new FileInfo(path);

    if (!fi1->Exists) {
        //Create a file to write to.
        StreamWriter* sw = fi1->CreateText();
        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 = fi1->OpenText();
    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");
        FileInfo* fi2 = new FileInfo(path2);

        //Ensure that the target does not exist.
        fi2->Delete();

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

        //Delete the newly created file.
        fi2->Delete();
        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 内)

参照

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