Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 10 Бинарные файлы.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
165.81 Кб
Скачать

10.4. Другие классы для работы с файлами

10.4.1. Классы File и Directory

Служебные классы File и Directory предоставляют множество статических методов для исчерпывающего манипулирования файлами и папками. Эти методы дают возможность перемещать файлы, опрашивать и обновлять атрибуты, а также создавать объекты FileStream. Напомним, что статические методы могут вызываться на классах без создания их экземпляров.

Некоторые из наиболее полезных статических методов класса File перечислены в табл. 10.2.

Таблица 10.2.

Некоторые статические методы классов File, Directory

Метод

Описание

Сору ()

Копирует файл из исходного местоположения в целевое

Create ()

Создает файл по указанному пути

Delete ()

Удалят файл

Open ()

Возвращает объект FileStream, созданный для файла, который находится по указанному пути

Move ()

Перемещает указанный файл в новое место. Можно специфицировать другое имя файла в его новом местоположении

CreateDirectory ()

Создает каталог с указанным путем

Delete ()

Удаляет указанный каталог и все файлы внутри него

GetDirectories ()

Возвращает массив объектов string, представляющих имена каталогов внутри указанного каталога

GetFiles ()

Возвращает массив объектов string, представляющих имена файлов, находящихся в указанном каталоге

GetFileSystemEntnes ()

Возвращает массив объектов string, представляющих имена файлов и каталогов внутри указанного каталога

Move ()

Перемещает указанный каталог в новое место. Вы можете специфицировать другое имя папки в его новом местоположении

10.4.2. Класс FileInfо

В отличие от класса File, класс FileInfо не является статическим и не имеет статических методов. Этот класс может использоваться только при создании его экземпляров. Объект FileInfo представляет файл на диске или сетевом ресурсе, и можно создавать его, указывая путь к файлу:

FileInfo aFile = new FileInfo(@"C:\Temp.txt");

Можно также передать имя каталога конструктору FileInfo, хотя в практическом смысле это не слишком удобно, поскольку требует инициализации базового класса для FileInfo, которым является FileSystemInfo, информацией каталога, но ни один из методов FileInfo или свойств, относящихся к файлам, не будет использован.

Многие методы, представленные классом FileInfo, подобны методам класса File, но поскольку File — статический класс, он требует строкового параметра, специфицирующего местоположение файла для каждого вызова метода. Поэтому показанные ниже вызовы делают одно и то же:

FileInfo aFile = new FileInfo("Data.txt");

if (aFile.Exists)

Console.WriteLine("файл существует");

if (File.Exists("Data.txt"))

Console.WriteLine("файл существует");

В этом коде выполняется проверка существования файла Data.txt. Обратите внимание, что здесь не специфицируется никакой информации о каталоге; это означает, что наличие файла проверяется только в текущем рабочем каталоге.

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

  • Имеет смысл использовать методы статического класса File, если вы осуществляете единственный вызов метода — такой вызов будет быстрее, потому что .NET Framework не нужно проходить процесс создания экземпляра нового объекта с последующим вызовом его метода.

  • Если приложение выполняет несколько операций с файлом, то более оправдано создать экземпляр объекта FileInfo и пользоваться его методами; это позволит сэкономить время, потому что объект будет уже ссылаться на правильный файл в файловой системе, в то время как статический класс вынужден находить его каждый раз заново.

Класс FileInfo также предоставляет свойства лежащего в основе файла, часть из которых позволяет выполнять его обновление. Многие из этих свойств унаследованы от FileSystemInfо и потому применимы как к File, так и к Directory. Свойства класса FileSystemInfо перечислены в табл. 10.4.

Таблица 10.4.

Свойства класса FileSystemlnfо

Свойство

Описание

Attributes

Получает или устанавливает атрибуты текущего файла или каталога, используя перечисление FileAttributes

CreationTime

Получает или устанавливает дату и время текущего файла

Extension

Извлекает расширение файла. Свойство доступно только для чтения

Exists

Определяет, существует ли файл. Доступное только для чтения абстрактное свойство, переопределенное в Filelnfo и Directorylnfo

FullName

Извлекает полный путь файла. Свойство доступно только для чтения

LastAccessTime

Получает или устанавливает дату и время последнего обращения к текущему файлу

LastwnteTime

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

Name

Извлекает полный путь файла. Доступное только для чтения абстрактное свойство, переопределенное в Filelnfo и Directorylnfo

Свойства, специфичные для FileInfo, описаны в табл. 10.5.

Таблица 10.5.

Свойства класса FileInfo

Свойство

Описание

Directory

Извлекает объект DirectoryInfo, представляющий каталог, который содержит текущий файл. Только для чтения

DirectoryName

Путь каталога файла. Только для чтения

isReadOnly

Ссылка на атрибут файла "только для чтения". Это свойство также доступно через Attributes

Length

Размер файла в байтах типа long. Только для чтения

Объект FileInfo сам по себе не представляет поток. Чтобы прочесть или записать в файл, необходимо создать объект Stream. Объект FileInfo помогает в этом, предлагая несколько методов, возвращающих экземпляры объектов Stream.