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:\\\MyDir\\\MyFile.txt" 在 C# 中,或在 "c:\MyDir\MyFile.txt" Visual Basic 中。

  • "c:\\\MyDir" 在 C# 中,或在 "c:\MyDir" Visual Basic 中。

  • "MyDir\\\MySubdir" 在 C# 中,或在 "MyDir\MySubDir" Visual Basic 中。

  • "\\\\\\\MyServer\\\MyShare" 在 C# 中,或在 "\\\MyServer\MyShare" Visual Basic 中。

有关常见 I/O 任务的列表,请参阅 常见 I/O 任务

方法

AppendAllBytes(String, Byte[])

提供用于创建、复制、删除、移动和打开单一文件的静态方法,并协助创建 FileStream 对象。

AppendAllBytesAsync(String, Byte[], CancellationToken)

提供用于创建、复制、删除、移动和打开单一文件的静态方法,并协助创建 FileStream 对象。

AppendAllLines(String, IEnumerable<String>)

向一个文件中追加行,然后关闭该文件。 如果指定文件不存在,此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。

AppendAllLines(String, IEnumerable<String>, Encoding)

使用指定的编码向一个文件中追加行,然后关闭该文件。 如果指定文件不存在,此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。

AppendAllLinesAsync(String, IEnumerable<String>, CancellationToken)

以异步形式向一个文件中追加行,然后关闭该文件。 如果指定文件不存在,此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。

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

使用指定的编码以异步形式向一个文件中追加行,然后关闭该文件。 如果指定文件不存在,此方法会创建一个文件,向其中写入指定的行,然后关闭该文件。

AppendAllText(String, String)

打开一个文件,向其中追加指定的字符串,然后关闭该文件。 如果文件不存在,此方法将创建一个文件,将指定的字符串写入文件,然后关闭该文件。

AppendAllText(String, String, Encoding)

使用指定的编码将指定的字符串追加到文件中,如果文件还不存在则创建该文件。

AppendAllTextAsync(String, String, CancellationToken)

以异步方式打开文件或创建文件(如果文件尚不存在),将指定的字符串追加到该文件,然后关闭文件。

AppendAllTextAsync(String, String, Encoding, CancellationToken)

以异步方式打开文件或创建文件(如果文件尚不存在),使用指定的编码将指定的字符串追加到该文件,然后关闭文件。

AppendText(String)

创建一个 StreamWriter,它将 UTF-8 编码文本追加到现有文件或新文件(如果指定文件不存在)。

Copy(String, String)

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

Copy(String, String, Boolean)

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

Create(String)

在指定路径中创建、截断和覆盖文件。

Create(String, Int32)

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

Create(String, Int32, FileOptions)

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

Create(String, Int32, FileOptions, FileSecurity)

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

CreateSymbolicLink(String, String)

创建由 path 标识的文件符号链接,该 pathToTarget链接指向 。

CreateText(String)

创建或打开用于写入 UTF-8 编码文本的文件。 如果文件已存在,则替换其内容。

Decrypt(String)

使用 Encrypt(String) 方法解密由当前帐户加密的文件。

Delete(String)

删除指定的文件。

Encrypt(String)

将某个文件加密,使得只有加密该文件的帐户才能将其解密。

Exists(String)

确定指定的文件是否存在。

GetAccessControl(String)

获取一个 FileSecurity 对象,它封装指定文件的访问控制列表 (ACL) 条目。

GetAccessControl(String, AccessControlSections)

获取一个 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)

将指定文件移到新位置,提供要指定新文件名的选项。

Move(String, String, Boolean)

将指定文件移动到新位置,提供用于指定新文件名和替换目标文件(如果已存在)的选项。

Open(String, FileMode)

通过不共享的读/写访问权限打开指定路径上的 FileStream

Open(String, FileMode, FileAccess)

通过指定的模式和不共享的访问权限打开指定路径上的 FileStream

Open(String, FileMode, FileAccess, FileShare)

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

Open(String, FileStreamOptions)

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

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

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

OpenRead(String)

打开现有文件以进行读取。

OpenText(String)

打开现有 UTF-8 编码文本文件以进行读取。

OpenWrite(String)

打开一个现有文件或创建一个新文件以进行写入。

ReadAllBytes(String)

打开一个二进制文件,将文件的内容读入一个字节数组,然后关闭该文件。

ReadAllBytesAsync(String, CancellationToken)

以异步形式打开一个二进制文件,将文件的内容读入一个字节数组,然后关闭该文件。

ReadAllLines(String)

打开一个文本文件,读取文件的所有行,然后关闭该文件。

ReadAllLines(String, Encoding)

打开一个文件,使用指定的编码读取文件的所有行,然后关闭该文件。

ReadAllLinesAsync(String, CancellationToken)

以异步形式打开一个文本文件,读取文件的所有行,然后关闭该文件。

ReadAllLinesAsync(String, Encoding, CancellationToken)

以异步形式打开一个文本文件,使用指定的编码读取文件的所有行,然后关闭该文件。

ReadAllText(String)

打开一个文本文件,读取文件中的所有文本,然后关闭此文件。

ReadAllText(String, Encoding)

打开一个文件,使用指定的编码读取文件中的所有文本,然后关闭此文件。

ReadAllTextAsync(String, CancellationToken)

以异步形式打开一个文本文件,读取文件中的所有文本,然后关闭此文件。

ReadAllTextAsync(String, Encoding, CancellationToken)

以异步形式打开一个文本文件,使用指定的编码读取文件的所有文本,然后关闭该文件。

ReadLines(String)

读取文件的行。

ReadLines(String, Encoding)

读取具有指定编码的文件的行。

ReadLinesAsync(String, CancellationToken)

异步读取文件的行。

ReadLinesAsync(String, Encoding, CancellationToken)

异步读取具有指定编码的文件的行。

Replace(String, String, String)

使用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份。

Replace(String, String, String, Boolean)

用其他文件的内容替换指定文件的内容,这一过程将删除原始文件,并创建被替换文件的备份,还可以忽略合并错误。

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[])

创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。 如果目标文件已存在,则会将其截断并覆盖。

WriteAllBytesAsync(String, Byte[], CancellationToken)

以异步形式创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。 如果目标文件已存在,则会将其截断并覆盖。

WriteAllLines(String, IEnumerable<String>)

创建一个新文件,向其中写入一个字符串集合,然后关闭该文件。

WriteAllLines(String, IEnumerable<String>, Encoding)

使用指定的编码创建一个新文件,向其中写入一个字符串集合,然后关闭该文件。

WriteAllLines(String, String[])

创建一个新文件,在其中写入指定的字节数组,然后关闭该文件。

WriteAllLines(String, String[], Encoding)

创建一个新文件,使用指定编码在其中写入指定的字符串数组,然后关闭该文件。

WriteAllLinesAsync(String, IEnumerable<String>, CancellationToken)

以异步形式创建一个新文件,在其中写入指定的行,然后关闭该文件。

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

以异步形式创建一个新文件,使用指定编码在其中写入指定的行,然后关闭该文件。

WriteAllText(String, String)

创建一个新文件,向其中写入指定的字符串,然后关闭文件。 如果目标文件已存在,则会将其截断并覆盖。

WriteAllText(String, String, Encoding)

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

WriteAllTextAsync(String, String, CancellationToken)

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

WriteAllTextAsync(String, String, Encoding, CancellationToken)

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

适用于

另请参阅