Учебно-методический комплекс общее количество часов 58 ч. Лекции 28 ч
Download 2.46 Mb.
|
Язык программирования C#
Основными реализациями абстрактных классов TextReader и TextWriter являются классы StreamReader и StreamWriter соответственно. Класс StreamReader используется для удобного построкового и посимвольного чтения из потока содержащего текстовые данные. Класс StreamWriter используется для построкового и посимвольного вывода текстовых данных в поток. Для записи в текстовой файл нужно просто создать объект класса StreamWriter. У этого класса определено несколько конструкторов, два из них употребляются чаще всего. StreamWriter(Stream) получает в качестве параметра уже созданный поток, этот поток должен быть открыт для записи. Это самый гибкий конструктор. StreamWriter(String) получает в качестве параметра имя файла. Этот конструктор сам создает поток и при необходимости перезаписывает файл. Запись в файл осуществляется методами Write() и WriteLine(). Эти методы аналогичны соответствующим методам класса System.Console. Для чтения из текстового файла используется класс StreamReader. У этого класса также определено несколько конструкторов, но употребляются в основном следующие два. StreamReader(Stream) получает в качестве параметра уже созданный поток, этот поток должен быть открыт для записи. Это самый гибкий конструктор. StreamReader(String) получает в качестве параметра имя файла. Этот конструктор сам создает поток и при необходимости перезаписывает файл. Чтение из файла осуществляется методами Read(), ReadLine() и ReadToEnd(). Метод Read() считывает следующий символ из файла. Метод возвращает int с кодом символа, если чтение завершилось успешно и -1 в противном случае. Метод ReadLine() считывает все символы, начиная с позиции, на которой находится до символа новой строки. Метод возвращает считанную строку в качестве результата. Метод ReadToEnd() считывает все символы, начиная с позиции, на которой находится до конца файла. Метод возвращает считанную строку в качестве результата. Приведем пример программы, создающий файл, записывающей в него 1000 строк текста и затем считывающей все нечетные строки из этого файла. using System; using System.IO; class Program { static string FileName = "1000 string.txt"; static string Message = "Строка №"; static int RecordsAmount = 1000; private static void WriteToFile() { FileStream OutputStream= new FileStream(FileName,FileMode.Create,FileAccess.Write); StreamWriter OutputText = new StreamWriter(OutputStream); for (int i = 1; i <= RecordsAmount; i++) OutputText.WriteLine(Message + i); OutputText.Close(); } private static void ReadFromFile() { FileStream InputStream = new FileStream(FileName, FileMode.Open, FileAccess.Read); StreamReader InputText = new StreamReader(InputStream); string Buffer; for (int i = 1; i <= RecordsAmount; i++) { Buffer = InputText.ReadLine(); If (i % 2 == 1) Console.WriteLine(Buffer); } InputText.Close(); } static void Main(string[] args) { WriteToFile(); ReadFromFile(); } } Лист. 5.8 После передачи управления методу Main, он вызывает сначала метод WriteToFile(), создающий текстовый файл и записывающей в него RecordsAmount строчек текста, далее вызывается метод ReadFromFile(), считывающий нечетные строки из ранее введенного текста. Опишем сначала работу метода WriteToFile(). Сначала в этом методе открывается для записи файловый поток – объект OutputStream. Затем он предается конструктору класса StreamWriter, который обворачивает его для удобного строкового вывода в объект OutputText. FileStream OutputStream = new FileStream(FileName, FileMode.Create, FileAccess.Write); StreamWriter OutputText = new StreamWriter(OutputStream); Лист. 5.9 Далее созданный файл заполняется стоками, содержащими символьное представление чисел от 1 до RecordsAmount включительно и небольшой дополнительный текст. Для этого используется метод WriteLine() класса OutputText. for (int i = 1; i <= RecordsAmount; i++) OutputText.WriteLine(Message + i); OutputText.Close(); Лист. 5.10 Далее текстовый поток необходимо закрыть. При закрытии обворачивающего потока закрывается также и сам обернутый поток. OutputText.Close(); Лист. 5.11 Опишем теперь работу метода ReadFromFile(). Первым делом он открывает на чтение объект файловый поток InputStream. Затем он предается конструктору класса StreamReader, который заворачивает его для удобства строкового ввода в объект InputText. FileStream InputStream = new FileStream(FileName, FileMode.Open, FileAccess.Read); StreamReader InputText = new StreamReader(InputStream); Лист. 5.12 Далее в цикле считываются ранее занесенные в файл 1000 string.txt строки. Но выводятся не все строки, а только строки с нечетными номерами. string Buffer; for (int i = 1; i <= RecordsAmount; i++) { Buffer = InputText.ReadLine(); if (i % 2 == 1) Console.WriteLine(Buffer); } InputText.Close(); Лист. 5.13 Вывод программы состоит из строк следующего вида. Строка № 1 Строка №"3 ……………. Строка №"999 Вывод. 5.2 Download 2.46 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling