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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



 

Чтение и запись данных выполняются при помощи класса 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();

}

Задание

 

1. Создать текстовый документ и ввести в несколько строк (не менее 5), соответствующих решению индивидуальной задачи по обработке строк из лабораторной работы №5. Файл сохранить в формате UTF-8 с заданным именем и расширением (см. табл. 10).

2. Модифицировать программу, разработанную при выполнении лабораторной работы №5 так, чтобы исходные строки для обработки считывались из текстового файла исходных данных, созданного при выполнении п.1 этого задания, а результаты обработки выводились в текстовый файл результатов с заданным именем и расширением (см. табл. 10). При этом должны иметь место следующие особенности:

­ чтение исходных данных из файла выполнять в методе Main().

­ запись результатов обработки в файл выполнять в пользовательской функции.

­ при выводе в файл следовать инструкции (см. табл. 10).

3. Модифицировать блок-схемы алгоритмов для метода Main() и пользовательской функции.

4. В отчете привести модифицированные блок-схемы и листинг программы, а также распечатки исходного файла и файла результатов.

5. Сделать вывод по работе.

 

Таблица 10. Варианты индивидуальных заданий к лабораторной работе №6

№ вар. Файл исх. данных Файл результатов Инструкция по выводу результатов в файл
1 data.dat lab6.txt В конец файла с новой строки добавить общее количество преобразованных предложений.
2 lab6.dat lab6.res В начале файла в отдельной строке вывести заданный номер слова n. В конец файла результатов с новой строки добавить общее количество выделенных слов.
3 lab6.in lab6.out В файле результатов списки отделить друг от друга пустой строкой
4 lab6.d1 lab6.d2 В конец файла с новой строки добавить общее количество слов
5 lab6_in.txt lab6_out.txt В начале файла в отдельной строке вывести заданный номер слова n. Обработанные строки выводить сплошным текстом (без перехода на новую строку), разделяя их рассчитанным числовым показателем.
6 lab6_d.txt lab6_r.txt Диаграммы в файле результатов пронумеровать в соответствии с порядковыми номерами строк исходного файла. Номер выводить в отдельной строке перед диаграммой в следующем формате: Диаграмма для предложения #.
7 lab6.str lab6.lft Обработанные строки выводить сплошным текстом (без перехода на новую строку), разделяя их рассчитанным числовым показателем.
8 lab6.str lab6.rgh В файле результатов в конце каждой обработанной строки добавить найденную разность количеств сделанных удалений и замен.
9 lab6_1.txt lab6_2.txt В начале файла в отдельной строке вывести заданный параметр n. В конец файла с новой строки добавить общее фактическое количество замен.
10 lab6.s1 lab6.s2 В начале файла в отдельной строке вывести заданный параметр n. Обработанные строки выводить сплошным текстом (без перехода на новую строку), разделяя их рассчитанным числовым показателем.
11 lab6d.s1 lab6r.s2 В файле результатов выделенные части строки разделить символом табуляции (\t). В начале файла в отдельной строке вывести заданный символ.
12 data.dat lab6.txt В файле результатов после каждой обработанной строки выводить в отдельной строке выводить найденный индекс
13 lab6.dat lab6.res В файле результатов выводить исходную и обработанную строку, разделенную символом наклонной черты
14 lab6.in lab6.out В файле результатов выводить исходную и обработанную строки в двойных кавычках, разделенные символом «минус»
15 lab6.str lab6.rgh В файле результатов в конце каждой результатной строки через пробел вывести число перестановок слов
16 lab6_1.txt lab6_2.txt В файле результатов в конце каждой результатной строки через пробел вывести суммарное число удаленных символов
17 lab6d.s1 lab6r.s2 В файле результатов в конце каждой результатной строки через пробел вывести суммарное число звездочек, после чего через пробел выводить следующую строку
18 lab6.in lab6.out Перед каждой результатной строкой выводить количество замененных чисел
19 lab6.d1 lab6.d2 В файле результатов после каждой результатной строки выводить с новой строки число удаленных букв и число удаленных знаков препинания, разделенных символом косой черты
20 lab6_in.txt lab6_out.txt В начале файла в отдельной строке вывести через пробел заданную длину и заданный символ
21 lab6_d.txt lab6_r.txt В конце каждой результатной строки вывести число введенных пробелов
22 lab6.str lab6.rgh В начале каждой результатной строки вывести число введенных пробелов

 


 

Лабораторная работа №7

 

Тема: Статические структуры данных

 

Цель: освоение составления и тестирования алгоритмов и программ, содержащих простые запросы действий пользователя и выполняющих управление данными с использованием статических структур.

 

Теоретические положения

 



Поделиться:


Последнее изменение этой страницы: 2021-09-26; просмотров: 116; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.158.47 (0.019 с.)