Catch (IOException exc)
{
Console.WriteLine(exc.Message +
"Ошибка при чтении/записи файла.");
}
fin.Close();
fout.Close();
}
}
Чтение и запись текста (символьные потоки)
Символьные потоки работают с любой кодировкой.
Чтобы выполнять файловые операции на символьной основе, поместите объект класса FileStream внутрь объекта класса StreamReader или класса StreamWriter.
Эти классы автоматически преобразуют байтовый поток в строки и наоборот.
ОСОБЕННОСТИ:
Метод StreamReader.ReadLine() автоматически определяет конец строки и прекращает чтение в этом месте.
Метод StreamWriter.Writer() автоматически добавляет комбинацию конца строки (\r\n – возврат каретки, перевод строки).
рис.8
Присоединение файла или потока к классам StreamReader или StreamWriter
Класс StreamReader можно использовать для чтения данных из любого источника. Для этого вместо применения имени файла в конструкторе можно применять ссылку на другой поток. Например, в классе FileInfo существуют методы OpenText() и CreateText(), которые возвращают ссылки на StreamReader.
Класс StreamWriter можно использовать для записи данных в любой приемник.
Класс StreamReader — производный от TextReader.
Класс StreamWriter — производный от класса TextWriter.
Следовательно, классы StreamWriter и StreamReader имеют доступ к методам и свойствам, определенным их базовыми классами.
StreamReader
В классе StreamReader определено несколько конструкторов. Чаще всего используются следующие конструкторы, которые проверяют маркеры кодировки в начале файла (2-3 символа):
StreamReader (string path) //прямое присоединение StreamReader к файлу
Path – полный путь (имя файла). Файл должен существовать.
StreamReader (Stream stream) // присоединение StreamReader к потоку
Stream - имя открытого потока.
Примеры.
1) StreamReader sr = new StreamReader(@"c:\Temp\ReadMy.txt");
2) FileStrim fs = new FileStrim (@"c:\Temp\ReadMy.txt",
FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader sr = new StreamReader(fs);
Методы чтения:
string str = sr.ReadLine(); // читать строку, null - EOF
string str2 = sr.ReadToEnd(); // прочитать весь остаток файла
int nextChar = sr.Read (); // прочитать один символ (-1 = EOStrim)
char[ ] chr = new char[100];
int n = sr.Read(chr, 0, 100); // 100 символов со смещением 0
// n – реально прочитанное кол-во
Дата добавления: 2019-02-08; просмотров: 605;