共用方式為


FileInfo 類別

定義

提供建立、複製、刪除、移動和開啟檔案的屬性和實例方法,並協助建立 FileStream 物件。 無法繼承這個類別。

public ref class FileInfo sealed : System::IO::FileSystemInfo
public sealed class FileInfo : System.IO.FileSystemInfo
[System.Serializable]
public sealed class FileInfo : System.IO.FileSystemInfo
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class FileInfo : System.IO.FileSystemInfo
type FileInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
type FileInfo = class
    inherit FileSystemInfo
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type FileInfo = class
    inherit FileSystemInfo
Public NotInheritable Class FileInfo
Inherits FileSystemInfo
繼承
繼承
屬性

範例

下列範例示範 FileInfo 類別的一些主要成員。

第一次擷取屬性時,FileInfo 會呼叫 Refresh 方法,並快取檔案的相關信息。 在後續的呼叫中,您必須呼叫 Refresh,以取得最新的資訊複本。

using namespace System;
using namespace System::IO;

int main()
{
   String^ path = Path::GetTempFileName();
   FileInfo^ fi1 = gcnew FileInfo( path );
   //Create a file to write to.
   StreamWriter^ sw = fi1->CreateText();
   try
   {
     sw->WriteLine( "Hello" );
     sw->WriteLine( "And" );
     sw->WriteLine( "Welcome" );
   }
   finally
   {
     if ( sw )
        delete (IDisposable^)sw;
   }

   //Open the file to read from.
   StreamReader^ sr = fi1->OpenText();
   try
   {
      String^ s = "";
      while ( s = sr->ReadLine() )
      {
         Console::WriteLine( s );
      }
   }
   finally
   {
      if ( sr )
         delete (IDisposable^)sr;
   }

   try
   {
      String^ path2 = Path::GetTempFileName();
      FileInfo^ fi2 = gcnew 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 );
   }
}
using System;
using System.IO;

class Test
{
    
    public static void Main()
    {
        string path = Path.GetTempFileName();
        var fi1 = new FileInfo(path);

        // 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())
        {
            var s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }

        try
        {
            string path2 = Path.GetTempFileName();
            var fi2 = new FileInfo(path2);

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

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

            // Delete the newly created file.
            fi2.Delete();
            Console.WriteLine($"{path2} was successfully deleted.");
        }
        catch (Exception e)
        {
            Console.WriteLine($"The process failed: {e.ToString()}");
        }
    }
}
Imports System.IO

Public Class Test

    Public Shared Sub Main()
        Dim path1 As String = Path.GetTempFileName()
        Dim path2 As String = Path.GetTempFileName()
        Dim fi As New FileInfo(path1)

        ' Create a file to write to.
        Using sw As StreamWriter = fi.CreateText()
            sw.WriteLine("Hello")
            sw.WriteLine("And")
            sw.WriteLine("Welcome")
        End Using

        Try
            ' Open the file to read from.
            Using sr As StreamReader = fi.OpenText()
                Do While sr.Peek() >= 0
                    Console.WriteLine(sr.ReadLine())
                Loop
            End Using

            Dim fi2 As New FileInfo(path2)

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

            ' Copy the file.
            fi.CopyTo(path2)
            Console.WriteLine($"{path1} was copied to {path2}.")

            ' Delete the newly created file.
            fi2.Delete()
            Console.WriteLine($"{path2} was successfully deleted.")

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

此範例會產生類似下列的輸出。

Hello
And
Welcome
C:\Users\userName\AppData\Local\Temp\tmp70AB.tmp was copied to C:\Users\userName\AppData\Local\Temp\tmp70CB.tmp.
C:\Users\userName\AppData\Local\Temp\tmp70CB.tmp was successfully deleted.

備註

針對複製、移動、重新命名、建立、開啟、刪除和附加至檔案等一般作業,請使用 FileInfo 類別。

如果您要在相同的檔案上執行多個作業,則使用 FileInfo 實例方法,而不是 File 類別的對應靜態方法會更有效率,因為安全性檢查不一定一定是必要的。

當您建立或開啟檔案時,許多 FileInfo 方法都會傳回其他 I/O 類型。 您可以使用這些其他類型的來進一步操作檔案。 如需詳細資訊,請參閱特定 FileInfo 成員,例如 OpenOpenReadOpenTextCreateTextCreate

根據預設,對新檔案的完整讀取/寫入存取權會授與所有使用者。

下表描述用來自定義各種 FileInfo 方法行為的列舉。

列舉 描述
FileAccess 指定檔案的讀取和寫入存取權。
FileShare 指定已使用之檔案允許的存取層級。
FileMode 指定是否保留或覆寫現有檔案的內容,以及建立現有檔案的要求是否造成例外狀況。

注意

在接受路徑做為輸入字串的成員中,該路徑的格式必須良好或引發例外狀況。 例如,如果路徑為完整,但開頭為空格,則路徑不會在 類別的方法中修剪。 因此,路徑的格式不正確,而且會引發例外狀況。 同樣地,路徑或路徑的組合不能完全限定兩次。 例如,在大部分情況下,“c:\temp c:\windows” 也會引發例外狀況。 使用接受路徑字串的方法時,請確定您的路徑格式良好。

在接受路徑的成員中,路徑可以參考檔案或只參考目錄。 指定的路徑也可以參考伺服器和共享名稱的相對路徑或通用命名慣例 (UNC) 路徑。 例如,下列所有都是可接受的路徑:

  • “c:\\MyDir\\MyFile.txt”in C#, or “c:\MyDir\MyFile.txt” in Visual Basic.

  • C# 中的 “c:\\MyDir” 或 Visual Basic 中的 “c:\MyDir”。

  • C# 中的 “MyDir\\MySubdir” 或 Visual Basic 中的 “MyDir\MySubDir”。

  • C# 中的 “\\\\MyServer\\MyShare” 或 Visual Basic 中的 “\\MyServer\MyShare”。

FileInfo 類別提供下列屬性,可讓您擷取檔案的相關信息。 如需如何使用每個屬性的範例,請參閱屬性頁。

  • Directory 屬性會擷取代表檔案父目錄的物件。

  • DirectoryName 屬性會擷取檔案父目錄的完整路徑。

  • Exists 屬性會先檢查檔案是否存在,再加以操作。

  • IsReadOnly 屬性會擷取或設定值,指定是否可以修改檔案。

  • Length 會擷取檔案的大小。

  • Name 會擷取檔名。

建構函式

FileInfo(String)

初始化 FileInfo 類別的新實例,這個實例可作為檔案路徑的包裝函式。

欄位

FullPath

表示目錄或檔案的完整路徑。

(繼承來源 FileSystemInfo)
OriginalPath

使用者原本指定的路徑,無論是相對路徑還是絕對路徑。

(繼承來源 FileSystemInfo)

屬性

Attributes

取得或設定目前檔案或目錄的屬性。

(繼承來源 FileSystemInfo)
CreationTime

取得或設定目前檔案或目錄的建立時間。

(繼承來源 FileSystemInfo)
CreationTimeUtc

取得或設定目前檔案或目錄的協調通用時間 (UTC) 建立時間。

(繼承來源 FileSystemInfo)
Directory

取得父目錄的實例。

DirectoryName

取得字串,表示目錄的完整路徑。

Exists

取得值,指出檔案是否存在。

Extension

取得檔名的擴展名部分,包括前置點 .,即使它是整個檔名,或是沒有擴展名則為空字串。

(繼承來源 FileSystemInfo)
FullName

取得目錄或檔案的完整路徑。

(繼承來源 FileSystemInfo)
IsReadOnly

取得或設定值,這個值會判斷目前檔案是否為唯讀。

LastAccessTime

取得或設定上次存取目前檔案或目錄的時間。

(繼承來源 FileSystemInfo)
LastAccessTimeUtc

取得或設定上次存取目前檔案或目錄的時間,以國際標準時間 (UTC) 為單位。

(繼承來源 FileSystemInfo)
LastWriteTime

取得或設定上次寫入目前檔案或目錄的時間。

(繼承來源 FileSystemInfo)
LastWriteTimeUtc

取得或設定上次寫入目前檔案或目錄的時間,以國際標準時間 (UTC) 為單位。

(繼承來源 FileSystemInfo)
Length

取得目前檔案的大小,以位元組為單位。

LinkTarget

取得位於 FullName的鏈接目標路徑,如果這個 FileSystemInfo 實例不代表連結,則為 null

(繼承來源 FileSystemInfo)
Name

取得檔案的名稱。

UnixFileMode

取得或設定目前檔案或目錄的 Unix 檔案模式。

(繼承來源 FileSystemInfo)

方法

AppendText()

建立 StreamWriter,將文字附加至這個 FileInfo實例所表示的檔案。

CopyTo(String)

將現有的檔案複製到新的檔案,不允許覆寫現有的檔案。

CopyTo(String, Boolean)

將現有的檔案複製到新的檔案,允許覆寫現有的檔案。

Create()

建立檔案。

CreateAsSymbolicLink(String)

建立位於 FullName 中的符號連結,指向指定的 pathToTarget

(繼承來源 FileSystemInfo)
CreateObjRef(Type)

建立物件,其中包含產生用來與遠端物件通訊之 Proxy 所需的所有相關信息。

(繼承來源 MarshalByRefObject)
CreateText()

建立寫入新文本檔的 StreamWriter

Decrypt()

使用 Encrypt() 方法解密目前帳戶加密的檔案。

Delete()

永久刪除檔案。

Encrypt()

加密檔案,讓只有用來加密檔案的帳戶才能解密它。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetAccessControl()

取得 FileSecurity 對象,這個物件會封裝目前 FileInfo 物件所描述之檔案的訪問控制清單 (ACL) 專案。

GetAccessControl(AccessControlSections)

取得 FileSecurity 對象,這個物件會封裝目前 FileInfo 物件所描述之檔案的指定訪問控制清單 (ACL) 項目類型。

GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetLifetimeService()
已淘汰.

擷取控制這個實例存留期原則的目前存留期服務物件。

(繼承來源 MarshalByRefObject)
GetObjectData(SerializationInfo, StreamingContext)
已淘汰.

使用檔名和其他例外狀況信息來設定 SerializationInfo 物件。

(繼承來源 FileSystemInfo)
GetType()

取得目前實例的 Type

(繼承來源 Object)
InitializeLifetimeService()
已淘汰.

取得存留期服務物件,以控制這個實例的存留期原則。

(繼承來源 MarshalByRefObject)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
MemberwiseClone(Boolean)

建立目前 MarshalByRefObject 對象的淺層複本。

(繼承來源 MarshalByRefObject)
MoveTo(String)

將指定的檔案移至新位置,並提供指定新檔名的選項。

MoveTo(String, Boolean)

將指定的檔案移至新位置,並提供選項來指定新的檔名,並在目的地檔案已經存在時覆寫目的地檔案。

Open(FileMode)

以指定的模式開啟檔案。

Open(FileMode, FileAccess)

以指定的模式開啟具有讀取、寫入或讀取/寫入存取權的檔案。

Open(FileMode, FileAccess, FileShare)

以指定模式開啟具有讀取、寫入或讀取/寫入存取權和指定共用選項的檔案。

Open(FileStreamOptions)

使用指定的建立模式、讀取/寫入和共用許可權,初始化 FileStream 類別的新實例,其他 FileStreams 可以具有相同的檔案、緩衝區大小、其他檔案選項和配置大小。

OpenRead()

建立唯讀 FileStream

OpenText()

使用UTF8編碼建立 StreamReader,以從現有的文字文件讀取。

OpenWrite()

建立唯寫 FileStream

Refresh()

重新整理 物件的狀態。

(繼承來源 FileSystemInfo)
Replace(String, String)

將指定檔案的內容取代為目前 FileInfo 物件所描述的檔案、刪除源檔,以及建立已取代檔案的備份。

Replace(String, String, Boolean)

將指定檔案的內容取代為目前 FileInfo 物件所描述的檔案、刪除源檔,以及建立已取代檔案的備份。 也指定是否忽略合併錯誤。

ResolveLinkTarget(Boolean)

取得指定鏈接的目標。

(繼承來源 FileSystemInfo)
SetAccessControl(FileSecurity)

FileSecurity 物件所描述的訪問控制清單 (ACL) 專案套用至目前 FileInfo 物件所描述的檔案。

ToString()

傳回傳遞至 FileInfo 建構函式的原始路徑。 使用完整路徑或檔名的 FullNameName 屬性。

ToString()

傳回原始路徑。 針對完整路徑或檔案/目錄名稱,使用 FullNameName 屬性。

(繼承來源 FileSystemInfo)

擴充方法

Create(FileInfo, FileMode, FileSystemRights, FileShare, Int32, FileOptions, FileSecurity)

建立新的檔案數據流,確保使用指定的屬性和安全性設定來建立它。

GetAccessControl(FileInfo)

傳回檔案的安全性資訊。

GetAccessControl(FileInfo, AccessControlSections)

傳回檔案的安全性資訊。

SetAccessControl(FileInfo, FileSecurity)

變更現有檔案的安全性屬性。

適用於

另請參閱