File 類別

定義

提供靜態方法用於建立、複製、刪除、移動及開啟單一檔案,並協助物件建立 FileStream

public ref class File abstract sealed
public ref class File sealed
public static class File
public sealed class File
[System.Runtime.InteropServices.ComVisible(true)]
public static class File
type File = class
[<System.Runtime.InteropServices.ComVisible(true)>]
type File = class
Public Class File
Public NotInheritable Class File
繼承
File
屬性

範例

以下範例示範如何利用該 File 類別檢查檔案是否存在,並根據結果,可以建立新檔案並寫入,或開啟現有檔案並讀取。 執行程式碼前,先建立一個 c:\temp 資料夾。

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);
            }
        }
    }
}
open System.IO

let path = @"c:\temp\MyTest.txt"

if File.Exists path |> not then
    // Create a file to write to.
    use sw = File.CreateText path
    sw.WriteLine "Hello"
    sw.WriteLine "And"
    sw.WriteLine "Welcome"

// Open the file to read from.
do
    use sr = File.OpenText path
    let mutable s = sr.ReadLine()

    while isNull s |> not do
        printfn $"{s}"
        s <- sr.ReadLine()
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.
            Using sw As StreamWriter = File.CreateText(path)
                sw.WriteLine("Hello")
                sw.WriteLine("And")
                sw.WriteLine("Welcome")
           End Using
        End If

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

備註

使用此 File 類別進行典型操作,例如複製、移動、重新命名、建立、開啟、刪除及一次附加於單一檔案。 你也可以用這個 File 類別來取得和設定與檔案建立、存取和寫入相關的檔案屬性或 DateTime 資訊。 如果你想對多個檔案執行操作,請參見 Directory.GetFilesDirectoryInfo.GetFiles

許多方法在建立或開啟檔案時會 File 回傳其他 I/O 類型。 您可以使用這些其他類型的來進一步操作檔案。 欲了解更多資訊,請參閱特定File成員如 OpenText、 或 CreateTextCreate

由於所有 File 方法都是靜態的,如果你只想執行一個動作,使用一個 File 方法可能比對應 FileInfo 的實例方法更有效率。 所有 File 方法都需要你操作的檔案路徑。

類別 File 中的靜態方法會對所有方法進行安全檢查。 如果你要重複使用同一物件多次,建議改用對應的實例方法, FileInfo 因為安全性檢查不一定是必要的。

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

下表描述用於客製化各種 File 方法行為的列舉。

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

Note

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

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

  • 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 任務的清單,請參見 Common I/O 任務

方法

名稱 Description
AppendAllBytes(String, Byte[])

在指定路徑的檔案末尾附加指定的位元組陣列。

如果該檔案不存在,此方法會建立一個新的檔案。

AppendAllBytes(String, ReadOnlySpan<Byte>)

在指定路徑的檔案末尾附加指定的位元組陣列。

如果該檔案不存在,此方法會建立一個新的檔案。

AppendAllBytesAsync(String, Byte[], CancellationToken)

非同步地將指定的位元組陣列附加到指定路徑的檔案末尾。

如果該檔案不存在,此方法會建立一個新的檔案。 若操作被取消,任務將以取消狀態返回。

AppendAllBytesAsync(String, ReadOnlyMemory<Byte>, CancellationToken)

非同步地將指定的位元組陣列附加到指定路徑的檔案末尾。

如果該檔案不存在,此方法會建立一個新的檔案。 若操作被取消,任務將以取消狀態返回。

AppendAllLines(String, IEnumerable<String>, Encoding)

使用指定的編碼將行附加至檔案,然後關閉檔案。 如果指定的檔案不存在,這個方法會建立檔案、將指定的行寫入檔案,然後關閉檔案。

AppendAllLines(String, IEnumerable<String>)

將行附加至檔案,然後關閉檔案。 如果指定的檔案不存在,這個方法會建立檔案、將指定的行寫入檔案,然後關閉檔案。

AppendAllLinesAsync(String, IEnumerable<String>, CancellationToken)

非同步地將行附加到檔案上,然後關閉該檔案。 如果指定的檔案不存在,這個方法會建立檔案、將指定的行寫入檔案,然後關閉檔案。

AppendAllLinesAsync(String, IEnumerable<String>, Encoding, CancellationToken)

非同步地使用指定的編碼方式將行數附加到檔案中,然後關閉該檔案。 如果指定的檔案不存在,這個方法會建立檔案、將指定的行寫入檔案,然後關閉檔案。

AppendAllText(String, ReadOnlySpan<Char>, Encoding)

將指定的字串附加到檔案後,若該檔案尚未存在,則建立該檔案。

AppendAllText(String, ReadOnlySpan<Char>)

將指定的字串附加到檔案後,若該檔案尚未存在,則建立該檔案。

AppendAllText(String, String, Encoding)

會用指定的編碼將指定的字串附加到檔案中,如果該檔案尚未存在,則建立該檔案。

AppendAllText(String, String)

打開一個檔案,將指定的字串附加到檔案後,然後關閉該檔案。 如果該檔案不存在,此方法會建立一個檔案,將指定的字串寫入檔案,然後關閉該檔案。

AppendAllTextAsync(String, ReadOnlyMemory<Char>, CancellationToken)

以異步方式開啟檔案,或在檔案不存在時建立檔案、將指定的字串附加至檔案,然後關閉檔案。

AppendAllTextAsync(String, ReadOnlyMemory<Char>, Encoding, CancellationToken)

以異步方式開啟檔案,或在檔案不存在時建立檔案、使用指定的編碼將指定的字串附加至檔案,然後關閉檔案。

AppendAllTextAsync(String, String, CancellationToken)

以異步方式開啟檔案,或在檔案不存在時建立檔案、將指定的字串附加至檔案,然後關閉檔案。

AppendAllTextAsync(String, String, Encoding, CancellationToken)

以異步方式開啟檔案,或在檔案不存在時建立檔案、使用指定的編碼將指定的字串附加至檔案,然後關閉檔案。

AppendText(String)

建立 一個 StreamWriter ,將 UTF-8 編碼文字附加到現有檔案,或若指定檔案不存在,則附加於新檔案。

Copy(String, String, Boolean)

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

Copy(String, String)

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

Create(String, Int32, FileOptions, FileSecurity)

在指定路徑中建立或覆寫檔案,指定緩衝區大小、描述如何建立或覆寫檔案的選項,以及決定檔案存取控制與稽核安全性的值。

Create(String, Int32, FileOptions)

在指定路徑中建立或覆寫檔案,指定緩衝區大小及描述如何建立或覆寫該檔案的選項。

Create(String, Int32)

在指定路徑中建立或截斷並覆寫檔案,並指定緩衝區大小。

Create(String)

在指定路徑中建立或截斷並覆寫檔案。

CreateHardLink(String, String)

提供靜態方法用於建立、複製、刪除、移動及開啟單一檔案,並協助物件建立 FileStream

CreateSymbolicLink(String, String)

建立一個符號連結 path ,指向 pathToTarget

CreateText(String)

建立或開啟一個用於撰寫 UTF-8 編碼文字的檔案。 如果檔案已經存在,其內容會被替換。

Decrypt(String)

解密由活期帳戶用此 Encrypt(String) 方法加密的檔案。

Delete(String)

刪除指定的檔案。

Encrypt(String)

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

Exists(String)

判斷指定的檔案是否存在。

GetAccessControl(String, AccessControlSections)

取得 FileSecurity 一個物件,封裝特定檔案的存取控制清單(ACL)條目。

GetAccessControl(String)

取得 FileSecurity 一個物件,封裝指定檔案的存取控制清單(ACL)條目。

GetAttributes(SafeFileHandle)

取得與 fileHandle相關聯的檔案或目錄的指定FileAttributes值。

GetAttributes(String)

取得 FileAttributes 路徑上的檔案。

GetCreationTime(SafeFileHandle)

回傳指定檔案或目錄的建立時間。

GetCreationTime(String)

回傳指定檔案或目錄的建立日期與時間。

GetCreationTimeUtc(SafeFileHandle)

回傳指定檔案或目錄的建立日期與時間,以協調世界時(UTC)為基準。

GetCreationTimeUtc(String)

回傳指定檔案或目錄的建立日期與時間,以協調世界時(UTC)為基準。

GetLastAccessTime(SafeFileHandle)

回傳指定檔案或目錄的最後存取日期與時間。

GetLastAccessTime(String)

回傳指定檔案或目錄最後被存取的日期與時間。

GetLastAccessTimeUtc(SafeFileHandle)

回傳指定檔案或目錄的最後存取日期與時間,並以協調世界時(UTC)為準。

GetLastAccessTimeUtc(String)

回傳該指定檔案或目錄最後被存取的日期與時間,以協調世界時(UTC)為準。

GetLastWriteTime(SafeFileHandle)

回傳指定檔案或目錄的最後寫入日期與時間。

GetLastWriteTime(String)

回傳指定檔案或目錄最後寫入的日期與時間。

GetLastWriteTimeUtc(SafeFileHandle)

回傳指定檔案或目錄的最後寫入日期與時間,以協調世界時(UTC)為基準。

GetLastWriteTimeUtc(String)

回傳該指定檔案或目錄最後寫入的日期與時間,以協調世界時(UTC)為準。

GetUnixFileMode(SafeFileHandle)

取得 UnixFileMode 指定的檔案帳柄。

GetUnixFileMode(String)

取得 UnixFileMode 路徑上的檔案。

Move(String, String, Boolean)

將指定檔案移至新位置,並提供指定新檔名及替換目標檔案(若已存在)的選項。

Move(String, String)

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

Open(String, FileMode, FileAccess, FileShare)

在指定路徑上開啟 a FileStream ,擁有指定的模式,具備讀取、寫入或讀寫權限,並有指定的共享選項。

Open(String, FileMode, FileAccess)

在指定路徑上開啟 a FileStream ,並以指定模式與存取方式,且不共享。

Open(String, FileMode)

在指定路徑上開啟 a FileStream ,並以讀寫存取且不共享。

Open(String, FileStreamOptions)

初始化類別的新實例 FileStream ,包含指定的路徑、建立模式、讀寫與共享權限、其他檔案串流對同一檔案的存取權限、緩衝區大小、額外檔案選項及配置大小。

OpenHandle(String, FileMode, FileAccess, FileShare, FileOptions, Int64)

初始化類別的新實例 SafeFileHandle ,包含指定的路徑、建立模式、讀寫與共享權限、其他安全檔案句柄對同一檔案的存取權限、額外檔案選項及配置大小。

OpenNullHandle()

提供靜態方法用於建立、複製、刪除、移動及開啟單一檔案,並協助物件建立 FileStream

OpenRead(String)

開啟一個既有的檔案來讀取。

OpenText(String)

開啟一個現有的 UTF-8 編碼文字檔以供閱讀。

OpenWrite(String)

開啟現有檔案或建立新檔案進行寫入。

ReadAllBytes(String)

打開一個二進位檔案,將檔案內容讀入位元組陣列,然後關閉該檔案。

ReadAllBytesAsync(String, CancellationToken)

非同步開啟二進位檔案,將檔案內容讀入位元組陣列,然後關閉該檔案。

ReadAllLines(String, Encoding)

開啟一個檔案,讀取指定編碼的所有行,然後關閉該檔案。

ReadAllLines(String)

打開一個文字檔,讀取檔案的所有行數,然後關閉該檔案。

ReadAllLinesAsync(String, CancellationToken)

非同步開啟文字檔,讀取檔案的所有行,然後關閉該檔案。

ReadAllLinesAsync(String, Encoding, CancellationToken)

非同步開啟文字檔,讀取指定編碼的所有行,然後關閉檔案。

ReadAllText(String, Encoding)

打開檔案,讀取指定編碼中的所有文字,然後關閉該檔案。

ReadAllText(String)

打開一個文字檔,讀取檔案中的所有文字,然後關閉該檔案。

ReadAllTextAsync(String, CancellationToken)

非同步開啟文字檔,讀取檔案中所有文字,然後關閉檔案。

ReadAllTextAsync(String, Encoding, CancellationToken)

非同步開啟文字檔,讀取指定編碼中的所有文字,然後關閉該檔案。

ReadLines(String, Encoding)

讀取具有指定編碼方式的檔案行。

ReadLines(String)

讀取檔案的行。

ReadLinesAsync(String, CancellationToken)

非同步讀取檔案的行數。

ReadLinesAsync(String, Encoding, CancellationToken)

非同步讀取具有指定編碼的檔案行數。

Replace(String, String, String, Boolean)

將指定檔案的內容替換為另一個檔案的內容,刪除原始檔案並備份被替換的檔案,並可選擇忽略合併錯誤。

Replace(String, String, String)

將指定檔案的內容替換為另一個檔案的內容,刪除原始檔案並備份被替換的檔案。

ResolveLinkTarget(String, Boolean)

取得指定檔案連結的目標。

SetAccessControl(String, FileSecurity)

將物件描述的 FileSecurity 存取控制清單(ACL)條目套用到指定的檔案上。

SetAttributes(SafeFileHandle, FileAttributes)

設定與 fileHandle相關的檔案或目錄的指定FileAttributes值。

SetAttributes(String, FileAttributes)

將檔案的指定 FileAttributes 路徑設定為指定路徑。

SetCreationTime(SafeFileHandle, DateTime)

設定檔案或目錄建立的日期與時間。

SetCreationTime(String, DateTime)

設定檔案建立的日期和時間。

SetCreationTimeUtc(SafeFileHandle, DateTime)

以國際標準時間設定建立檔案或目錄的日期和時間。

SetCreationTimeUtc(String, DateTime)

以國際標準時間 (UTC) 設定檔案建立的日期和時間。

SetLastAccessTime(SafeFileHandle, DateTime)

設定指定檔案或目錄最後被存取的日期與時間。

SetLastAccessTime(String, DateTime)

設定指定檔案最後存取的日期與時間。

SetLastAccessTimeUtc(SafeFileHandle, DateTime)

設定指定檔案或目錄最後被存取的日期與時間,並以協調世界時(UTC)為基準。

SetLastAccessTimeUtc(String, DateTime)

設定該檔案最後被存取的日期與時間,以協調世界時(UTC)為基準。

SetLastWriteTime(SafeFileHandle, DateTime)

設定指定檔案或目錄最後寫入的日期與時間。

SetLastWriteTime(String, DateTime)

設定指定檔案最後寫入的日期和時間。

SetLastWriteTimeUtc(SafeFileHandle, DateTime)

設定該指定檔案或目錄最後寫入的日期與時間,並以協調世界時(UTC)為基準。

SetLastWriteTimeUtc(String, DateTime)

設定該檔案最後寫入的日期與時間,以協調世界時(UTC)為基準。

SetUnixFileMode(SafeFileHandle, UnixFileMode)

設定指定檔案 handle 的指定 UnixFileMode 值。

SetUnixFileMode(String, UnixFileMode)

將檔案的指定 UnixFileMode 路徑設定為指定路徑。

WriteAllBytes(String, Byte[])

建立一個新檔案,將指定的位元組陣列寫入檔案,然後關閉該檔案。 如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllBytes(String, ReadOnlySpan<Byte>)

建立一個新檔案,將指定的位元組陣列寫入檔案,然後關閉該檔案。 如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllBytesAsync(String, Byte[], CancellationToken)

非同步建立新檔案,將指定的位元組陣列寫入檔案,然後關閉該檔案。 如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllBytesAsync(String, ReadOnlyMemory<Byte>, CancellationToken)

非同步建立新檔案,將指定的位元組陣列寫入檔案,然後關閉該檔案。 如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllLines(String, IEnumerable<String>, Encoding)

使用指定的編碼方式建立新的檔案、將字串集合寫入檔案,然後關閉檔案。

WriteAllLines(String, IEnumerable<String>)

建立新的檔案、將字串集合寫入檔案,然後關閉檔案。

WriteAllLines(String, String[], Encoding)

建立新的檔案、使用指定的編碼將指定的字串陣列寫入檔案,然後關閉檔案。

WriteAllLines(String, String[])

建立新的檔案、將指定的字串數位寫入檔案,然後關閉檔案。

WriteAllLinesAsync(String, IEnumerable<String>, CancellationToken)

非同步建立新檔案,寫入指定的行數,然後關閉該檔案。

WriteAllLinesAsync(String, IEnumerable<String>, Encoding, CancellationToken)

非同步建立新檔案,使用指定的編碼寫入指定的行,然後關閉檔案。

WriteAllText(String, ReadOnlySpan<Char>, Encoding)

建立一個新檔案,使用指定的編碼寫入指定的字串,然後關閉該檔案。

如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllText(String, ReadOnlySpan<Char>)

建立一個新檔案,將指定的字串寫入檔案,然後關閉該檔案。

如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllText(String, String, Encoding)

建立一個新檔案,使用指定的編碼寫入指定的字串,然後關閉該檔案。 如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllText(String, String)

建立一個新檔案,將指定的字串寫入檔案,然後關閉該檔案。 如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllTextAsync(String, ReadOnlyMemory<Char>, CancellationToken)

非同步建立新檔案,將指定的字串寫入檔案,然後關閉該檔案。

如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllTextAsync(String, ReadOnlyMemory<Char>, Encoding, CancellationToken)

非同步建立新檔案,使用指定的編碼寫入指定的字串,然後關閉該檔案。

如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllTextAsync(String, String, CancellationToken)

非同步建立新檔案,將指定的字串寫入檔案,然後關閉該檔案。 如果目標檔案已經存在,則會遭到截斷並覆寫。

WriteAllTextAsync(String, String, Encoding, CancellationToken)

非同步建立新檔案,使用指定的編碼寫入指定的字串,然後關閉該檔案。 如果目標檔案已經存在,則會遭到截斷並覆寫。

適用於

另請參閱