Классы File и FileInfo. AppendText() Создает объект StreamWriter и добавляет текст в файл СоруТо()
Скачать 20.01 Kb.
|
Классы File и FileInfo Класс FileInfo позволяет получать подробности относительно существующих файлов на жестком диске (т.е. время создания, размер и атрибуты) и предназначен для создания, копирования, перемещения и удаления файлов. Вдобавок к набору функциональности, унаследованной от FileSystemInfo, есть некоторые члены, уникальные для класса FileInfo, которые описаны ниже:
Обратите внимание, что большинство методов класса FileInfo возвращают специфический объект ввода-вывода (т.е. FileStream и StreamWriter), который позволяет начать чтение и запись данных в ассоциированный файл в разнообразных форматах. Скоро мы рассмотрим эти типы; однако прежде чем увидеть работающий пример, давайте изучим различные способы получения дескриптора файла с использованием класса FileInfo. Один из способов создания дескриптора файла предусматривает использование метода FileInfo.Create(): static void NewFile() { // Создаем новый файл FileInfo f = new FileInfo(@"C:\Test.dat"); FileStream fs = f.Create(); // Закрыть файловый поток fs.Close(); } Метод FileInfo.Create() возвращает тип FileStream, который предоставляет синхронную и асинхронную операции записи/чтения лежащего в его основе файла. Имейте в виду, что объект FileStream, возвращенный FileInfo.Create() открывает полный доступ по чтению и записи всем пользователям. Также имейте в виду, что после окончания работы с текущим объектом FileStream следует закрыть его дескриптор, чтобы освободить лежащие в основе потока неуправляемые ресурсы. С помощью метода FileInfo.Open() можно открывать существующие файлы, а также создавать новые файлы с гораздо более высокой точностью, чем FileInfo.Create(), учитывая, что Open() обычно принимает несколько параметров для описания общей структуры файла, с которым будет производиться работа. В результате вызова Open() получается возвращенный им объект FileStream. Взгляните на следующую логику: FileInfo f2 = new FileInfo(@"C:\Test1.dat"); using (FileStream fs2 = f2.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)) { }; Эта версия перегруженного метода Open() требует трех параметров. Первый параметр указывает общий тип запроса ввода-вывода (т.е. создать новый файл, открыть существующий файл и дописать в файл), указываемый в виде перечисления FileMode: public enum FileMode { CreateNew, Create, Open, OpenOrCreate, Truncate, Append } Второй параметр метода Open() — значение перечисления FileAccess — используется для определения поведения чтения/записи лежащего в основе потока. И, наконец, третий параметр метода Open() — FileShare — указывает, как файл может быть разделен с другими файловыми дескрипторами. Хотя метод FileInfo.Open() позволяет получить дескриптор файла довольно гибким способом, в классе FileInfo также предусмотрены для этого члены OpenRead() и OpenWrite(). Как и можно было ожидать, эти методы возвращают объект FileStream, соответствующим образом сконфигурированный только для чтения или только для записи, без необходимости применять различные значения перечислений. Еще один член типа FileInfo, связанный с открытием файлов — OpenText(). В отличие от Create(), Open(), OpenRead() и OpenWrite(), метод OpenText() возвращает экземпляр типа StreamReader, а не FileStream. Тип File предоставляет функциональность, почти идентичную типу FileInfo, с помощью нескольких статических методов. Подобно FileInfo, тип File поддерживает методы AppendText(), Create(), CreateText(), Open(), OpenRead(), OpenWrite() и OpenText(). Тип File также поддерживает несколько уникальных членов, перечисленных ниже, которые могут значительно упростить процесс чтения и записи текстовых данных: ReadAllBytes() Открывает указанный файл, возвращает двоичные данные в виде массива байт и затем закрывает файл ReadAllLines() Открывает указанный файл, возвращает символьные данные в виде массива строк, затем закрывает файл ReadAllText() Открывает указанный файл, возвращает символьные данные в виде System.String(), затем закрывает файл WriteAllBytes() Открывает указанный файл, записывает в него байтовый массив и закрывает файл WriteAllLines() Открывает указанный файл, записывает в него массив строк и закрывает файл WriteAllText() Открывает указанный файл, записывает в него данные из указанной строки и закрывает файл Отсюда вывод: когда необходимо быстро получить файловый дескриптор, тип File сэкономит некоторый объем ввода. Однако преимущество предварительного создания объекта FileInfo связано с возможностью исследования файла с использованием членов абстрактного базового класса FileSystemInfo. |