1 / 15

Текстовые файлы

Лекция. Текстовые файлы. Что такое текстовый файл. Текстовый файл состоит из символов, среди которых встречаются &quot;разделители строк&quot;. В разных ОС разделители выглядят по-разному, в Windows это r n, в Linux - <br>, в MacOS - .

zinnia
Download Presentation

Текстовые файлы

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Лекция Текстовые файлы

  2. Что такое текстовый файл Текстовый файл состоит из символов, среди которых встречаются "разделители строк". В разных ОС разделители выглядят по-разному, в Windows это \r\n, в Linux - \n, в MacOS - \r. Текстовый файл можно читать или писать только последовательно. При записи и чтении текстового файла нужно учитывать кодировку символов.

  3. Порядок работы с ресурсами Работа всегда складывается из трех этапов: Захватить ресурс. Воспользоваться ресурсом. Освободить ресурс. В применении к файлам это выглядит так. Открыть файл. Читать или писать в него. Закрыть файл.

  4. Классы для работы с текстовыми файлами TextReader TextWriter StreamReader StreamWriter StringReader StringWriter

  5. Абстрактный класс TextReader public virtual string ReadLine(); public virtual string ReadToEnd(); public virtual void Close(); public virtual int Read(ref char[] buffer, int index, int count); public virtual intRead(); public virtual intPeek();

  6. Потомки TextReader'a Класс TextReaderабстрактный, поэтому для работы с файлами надиске понадобится его потомок – класс StreamReader. Открытие файла (захват ресурса)происходит в конструкторе класса StreamReader. Закрытие файла (высвобождение ресурса) выполняется виртуальным методом Close().

  7. Пример построчного чтения publicstaticvoid Main() { TextReadersr = newStreamReader("111.txt"); string line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } sr.Close(); } Здесь закрытие не гарантировано, т.к. в процессе работы возможны исключения.

  8. Инструкция using TextReadersr = newStreamReader("111.txt"); using (sr) { String line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } }// здесь гарантированно выполняется sr.Close() Объект можно создать прямо в заголовке using. using (TextReadersr = newStreamReader("111.txt")) { }

  9. Абстрактный класс TextWriter public virtual void Write(тип value); public virtual void Write (string format,  params Object[] arg ); public virtual void WriteLine(тип value); public virtual void Flush(); public virtual void Close(); stringfileName = "111.txt"; using (StreamWritersw = newStreamWriter(fileName, false, Encoding.GetEncoding(1251))) { for (int i = 1; i < 10; i++) { string s = newstring('Ш', i); sw.WriteLine(s); } }

  10. Потомки TextWriter'a StreamWriter StringWriter

  11. Пример записи Дан массив строк. Сохранить его в текстовом файле. string[] ss = { "aaaaa", "bbbbbb", "ccccccc" }; using (TextWritertw = newStreamWriter("111.txt")) { foreach (string s inss) tw.WriteLine(s); }

  12. Кодировка символов В конечном счете в файл попадают не символы, а байты. Способ перевода потока символов в поток байтов и обратно определяется кодировкой. Кодировку осуществляет объект Encoder, который передается в объект StreamWriter. string[] ss = { "привет", "медвед", "!!!!!" }; using (TextWritertw = newStreamWriter("111.txt", false, Encoding.GetEncoding("Windows-1251"))) { foreach (string s inss) tw.WriteLine(s); }

  13. Класс Console В классе Console есть свойства publicstaticTextReader In { get; } publicstaticTextWriter Out { get; } и методы publicstaticvoidSetIn(TextReadernewIn); publicstaticvoidSetOut(TextWriternewOut); С их помощью можно заменить клавиатуру и экран файлами. using (TextWriter writer = newStreamWriter("console.txt")) { Console.SetOut(writer); Console.Write("Вводите >"); string s = Console.ReadLine(); Console.WriteLine("Вы ввели " + s); }

  14. Кодировка консоли TextReadersr = newStreamReader("111.txt", Encoding.GetEncoding("Windows-1251")); // Шрифт в консоли - TrueType Console.OutputEncoding = Encoding.Unicode; using (sr) { String line; while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } }

  15. Самостоятельно Создать форму для редактирования простого текста со стандартным набором пунктов меню File: New, Open, Save, SaveAs, Exit и стандартными диалогами.Пользователь должен получать предупреждения, когда он может потерять несохраненный результат редактирования текста. Разработайте класс ArrayReader, который наследует класс TextReader и позволяет читать текст из массива символов подобно тому, как экземпляр класса StringReader позволяет читать текст из строки. Имеется два текстовых файла, строки которых упорядочены по длине. Слить их в третий, тоже упорядоченный по длине строк. Разработайте класс ArrayWriter, который наследует класс TextWriter и позволяет писать текст в массив символов.

More Related