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) 路径。 例如,以下所有路径都是可接受的路径:

  • Visual Basic 中的“c:\\MyDir\\MyFile.txt”,或“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”。

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)

创建指向指定 pathToTargetFullName 中的符号链接。

(继承自 FileSystemInfo)
CreateObjRef(Type)

创建一个对象,其中包含生成用于与远程对象通信的代理所需的所有相关信息。

(继承自 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)

更改现有文件的安全属性。

适用于

另请参阅