Классы и методы для работы с текстовыми файлами


 

Чтение и запись данных выполняются при помощи класса Stream. Платформа .NET Framework предоставляет целый ряд классов, являющихся потомками Stream, в том числе FileStream, MemoryStream и NetworkStream.

Если доподлинно известно, что файл содержит только текст, то для чтения или записи можно применять классы StreamReader и SireamWriter соответственно. Эти классы разработаны специально для облегчения работы с текстом. Например, они обладают методами ReadLine() и WriteLine(), позволяющими читать и записывать одну строку текста.

Некоторые полезные свойства и методы для работы с текстовыми файлами:

 

// Методы, реализующие файловые операции

FileInfo экземпляр_файла = new FileInfo(имя_файла);

FileInfo экземпляр_файла_копии = экземпляр_файла.CopyTo(имя_файла_копии);

экземпляр_файла.Delete();

 

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

DateTime dt = экземпляр_файла.CreationTime;

bool f = экземпляр_файла.Exists;

long l = экземпляр_файла.Length;

 

// Методы, создающие потоки для работы с текстом с кодировкой UTF-8

StreamWriter поток_вывода = экземпляр_файла.CreateText();

StreamWriter поток_вывода = экземпляр_файла.AppendText();

StreamWriter поток_вывода = new StreamWriter(имя_файла);

 

StreamReader поток_ввода = экземпляр_файла.OpenText();

StreamReader поток_ввода = new StreamReader(имя_файла);

 

// Методы для работы с потоками

string s = поток_ввода.ReadLine(); // Возвращает null в конце файла

int k = поток_ввода.Read(); // Возвращает -1 в конце файла

string s = поток_ввода.ReadToEnd(); // Читает весь файл

поток_ввода.Close();

 

поток_вывода.Write();

поток_вывода.WriteLine();

поток_вывода.Close();

Класс FileInfo уже рассматривался выше. Конструктор создает экземпляр файла, который представляет файл, заданный его полным именем.

Метод CopyTo создает копию файла, заданного его полным именем. Возвращает экземпляр файла-копии. Возможен запрет перезаписи существующего файла.

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

Свойства CreationTime и LastAccessTime позволяют получить или задать соответственно время создания файла и время последнего доступа к файлу.

Свойство Exists возвращает true, если файл существует.

Свойство Length возвращает размер файла в байтах.

Методы CreateText и AppendText создают поток вывода текста StreamWriter. AppendText — для добавления текста в существующий файл. CreateText — для записи нового файла, либо перезаписи существующего.

Метод OpenText создает поток ввода текста StreamReader для считывания данных из существующего файла.

Класс StreamReader используется для чтения из текстовых файлов. Его методы Read и ReadLine читают из текстового файла один символ или всю строку соответственно. Метод ReadToEnd читает весь файл как одну строку, причем эта строка может содержать символы перевода строки.

Класс StreamWriter используется для записи в текстовые файлы. Его методы Write и WriteLine записывают в текстовый файл переменные типа string и строки текста с символом перевода строки в конце соответственно. Аргумент этих методов может содержать обозначения {0}, {1}, ..., возможно, с добавлением форматирующих кодов и ширины полей, что позволяет получать и включать в вывод дополнительные аргументы.

Метод Close закрывает доступ к файлу и освобождает ресурсы, которые использовались операционной системой.

Таким образом, создать поток можно:

1. с помощью объекта FileInfo и его методов CreateText, AppendText, OpenText;

2. непосредственно путем создания экземпляра класса StreamReader или StreamWriter.

Первый способ рассмотрим на примере чтения текста из файла, для чего необходимо сначала создать объект FileInfo и затем вызвать его метод OpenText(). Этот метод возвращает объект StreamReader для файла, представляемого экземпляром класса FileInfo. Имея этот объект, можно приступать к построчному чтению файла, например, в цикле.

FileInfo f = new FileInfo(@"D:\data.txt");

StreamReader fsr = f.OpenText();

string text;

do

{

text = fsr.ReadLine();

if (text == null) break;

// Использование строки text

} while (true)

fsr.Close();

 

Второй способ рассмотрим на примере записи данных в текстовый файл путем создания непосредственно экземпляра потока StreamWriter:

StreamWriter fsw = new StreamWriter(@"D:\data.r2");

fsw.WriteLine("Эта строка выводится в файл:\n");

fsw.Close();

 

В случае добавления данных в существующий текстовый файл следует использовать первый способ:

1. создать объект FileInfo, представляющий данный файл;

2. убедиться в том, что файл существует, используя свойство Exists;

3. если файл существует, то при помощи метода AppendText() создать экземпляра потока StreamWriter для добавления текстовых данных.

 

FileInfo f = new FileInfo(@"D:\data.r2");

if (f.Exists)

{

StreamWriter fsw = f.AppendText();

fsw.WriteLine("\nЭта строка добавляется в файл data.r2");

fsw.Close();

}

 



Дата добавления: 2021-12-14; просмотров: 287;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.