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 namespace System;
using namespace System::IO;
int main()
{
   String^ path = "c:\\temp\\MyTest.txt";
   if (  !File::Exists( path ) )
   {
      
      // Create a file to write to.
      StreamWriter^ sw = File::CreateText( path );
      try
      {
         sw->WriteLine( "Hello" );
         sw->WriteLine( "And" );
         sw->WriteLine( "Welcome" );
      }
      finally
      {
         if ( sw )
                  delete (IDisposable^)(sw);
      }
   }

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

   try
   {
      String^ path2 = String::Concat( 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 );
   }
}
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 成员,例如 OpenTextCreateTextCreate

由于所有 File 方法都是静态的,因此,如果只想执行一个操作,则使用 File 方法比相应的 FileInfo 实例方法更有效。 所有 File 方法都需要你正在操作的文件的路径。

File 类的静态方法对所有方法执行安全检查。 如果要多次重复使用对象,请考虑改用相应的 FileInfo 实例方法,因为安全检查并不总是必要的。

默认情况下,向所有用户授予对新文件的完整读/写访问权限。

下表描述了用于自定义各种 File 方法行为的枚举。

列举 描述
FileAccess 指定对文件的读取和写入访问权限。
FileShare 指定已使用的文件允许的访问级别。
FileMode 指定是否保留或覆盖现有文件的内容,以及创建现有文件的请求是否会导致异常。

注意

在接受路径作为输入字符串的成员中,该路径的格式必须正确或引发异常。 例如,如果路径完全限定,但以空格开头,则不会在类的方法中剪裁路径。 因此,路径格式不正确,并引发异常。 同样,路径或路径的组合不能完全限定两次。 例如,在大多数情况下,“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 任务的列表,请参阅 常见 I/O 任务

方法

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,该 StreamWriter 将 UTF-8 编码的文本追加到现有文件;如果指定的文件不存在,则追加到新文件中。

Copy(String, String, Boolean)

将现有文件复制到新文件。 允许覆盖同名文件。

Copy(String, String)

将现有文件复制到新文件。 不允许覆盖同名文件。

Create(String, Int32, FileOptions, FileSecurity)

在指定路径中创建或覆盖文件、指定缓冲区大小、描述如何创建或覆盖文件的选项,以及确定文件的访问控制和审核安全性的值。

Create(String, Int32, FileOptions)

在指定路径中创建或覆盖文件,指定缓冲区大小和描述如何创建或覆盖文件的选项。

Create(String, Int32)

创建或截断和覆盖指定路径中的文件,并指定缓冲区大小。

Create(String)

创建或截断和覆盖指定路径中的文件。

CreateSymbolicLink(String, String)

创建指向 pathToTargetpath 标识的文件符号链接。

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)

打开指定路径上的 FileStream,具有具有读取、写入或读/写访问权限和指定共享选项的指定模式。

Open(String, FileMode, FileAccess)

在指定路径上打开一个 FileStream,该路径具有指定的模式和不共享的访问权限。

Open(String, FileMode)

在具有读取/写入访问权限且不共享的指定路径上打开 FileStream

Open(String, FileStreamOptions)

使用指定的路径、创建模式、读/写和共享权限初始化 FileStream 类的新实例,其他 FileStreams 的访问权限可以具有相同的文件、缓冲区大小、其他文件选项和分配大小。

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

使用指定的路径、创建模式、读/写和共享权限初始化 SafeFileHandle 类的新实例,其他 SafeFileHandles 的访问权限可以具有相同的文件、其他文件选项和分配大小。

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)

设置创建文件或目录的日期和时间(UTC)。

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)

设置指定文件句柄的指定 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)

异步创建一个新文件,使用指定的编码将指定的字符串写入文件,然后关闭该文件。 如果目标文件已存在,则会截断并覆盖该文件。

适用于

另请参阅