Поделиться через


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 возвращают другие типы операций ввода-вывода при создании или открытии файлов. Эти другие типы можно использовать для дальнейшего управления файлом. Дополнительные сведения см. в конкретных FileInfo членах, таких как Open, OpenRead, OpenText, CreateTextили Create.

По умолчанию всем пользователям предоставляется полный доступ на чтение и запись к новым файлам.

В следующей таблице описываются перечисления, используемые для настройки поведения различных методов FileInfo.

Перечисление Описание
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.

Класс 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, или null, если этот экземпляр FileSystemInfo не представляет ссылку.

(Унаследовано от FileSystemInfo)
Name

Возвращает имя файла.

UnixFileMode

Возвращает или задает режим файлов Unix для текущего файла или каталога.

(Унаследовано от FileSystemInfo)

Методы

AppendText()

Создает StreamWriter, добавляющий текст в файл, представленный этим экземпляром FileInfo.

CopyTo(String)

Копирует существующий файл в новый файл, разрешая перезапись существующего файла.

CopyTo(String, Boolean)

Копирует существующий файл в новый файл, разрешая перезапись существующего файла.

Create()

Создает файл.

CreateAsSymbolicLink(String)

Создает символьную ссылку, расположенную в FullName, которая указывает на указанный pathToTarget.

(Унаследовано от FileSystemInfo)
CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
CreateText()

Создает StreamWriter, которая записывает новый текстовый файл.

Decrypt()

Расшифровывает файл, зашифрованный текущей учетной записью с помощью метода Encrypt().

Delete()

Окончательно удаляет файл.

Encrypt()

Шифрует файл таким образом, чтобы только учетная запись, используемая для шифрования файла, может расшифровать его.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetAccessControl()

Возвращает объект FileSecurity, который инкапсулирует записи списка управления доступом (ACL) для файла, описанного текущим объектом FileInfo.

GetAccessControl(AccessControlSections)

Возвращает объект FileSecurity, который инкапсулирует указанный тип записей списка управления доступом (ACL) для файла, описанного текущим объектом FileInfo.

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 с указанным режимом создания, разрешением на чтение и запись и общий доступ, доступ к другим файлам может иметь тот же файл, размер буфера, дополнительные параметры файла и размер выделения.

OpenRead()

Создает FileStreamтолько для чтения.

OpenText()

Создает StreamReader с кодировкой UTF8, которая считывается из существующего текстового файла.

OpenWrite()

Создает FileStreamтолько для записи.

Refresh()

Обновляет состояние объекта.

(Унаследовано от FileSystemInfo)
Replace(String, String)

Заменяет содержимое указанного файла файлом, описанным текущим объектом FileInfo, удаление исходного файла и создание резервной копии замененного файла.

Replace(String, String, Boolean)

Заменяет содержимое указанного файла файлом, описанным текущим объектом FileInfo, удалением исходного файла и созданием резервной копии замененного файла. Также указывает, следует ли игнорировать ошибки слияния.

ResolveLinkTarget(Boolean)

Возвращает целевой объект указанной ссылки.

(Унаследовано от FileSystemInfo)
SetAccessControl(FileSecurity)

Применяет записи списка управления доступом (ACL), описанные объектом FileSecurity к файлу, описанному текущим объектом FileInfo.

ToString()

Возвращает исходный путь, переданный конструктору FileInfo. Используйте свойство FullName или Name для полного пути или имени файла.

ToString()

Возвращает исходный путь. Используйте свойства FullName или Name для полного пути или имени файла или каталога.

(Унаследовано от FileSystemInfo)

Методы расширения

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

Создает новый файловый поток, обеспечивая его создание с указанными свойствами и параметрами безопасности.

GetAccessControl(FileInfo)

Возвращает сведения о безопасности файла.

GetAccessControl(FileInfo, AccessControlSections)

Возвращает сведения о безопасности файла.

SetAccessControl(FileInfo, FileSecurity)

Изменяет атрибуты безопасности существующего файла.

Применяется к

См. также раздел