Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Работа с текстовыми файлами




Текстовые файлы содержат символьную информацию, но, как и двоичные, тоже состоят из байтов. Поэтому потоки FileStream, BinaryWriter и BinaryReader можно использовать для записи в файлы и чтения из файлов текстовых строк, но лучше применять специально предназначенные для этого средства. Речь идет о потоках классов StreamWriter и StreamReader. Эти потоки чрезвычайно просты в использовании и удобны для работы с текстовыми файлами.

Основные приемы использования потоков StreamWriter и StreamReader демонстрируются в программе, исходный текст которой приведен ниже:

using System;

using System.IO;

Namespace TextFile

{

class Program

{

   static string testFile = "mydata.txt";

   static void Main(string[] args)

   {

       if (File.Exists(testFile))

       {

           Console.WriteLine("Файл {0} уже существует", testFile);

           Console.ReadLine();

           return;

       }

       StreamWriter sw = File.CreateText(testFile);

       sw.WriteLine("Каждый охотник желает знать, где сидит фазан!");

       sw.WriteLine("Число \"Пи\" равно примерно {0}.", 3.1415926);

       sw.Close();

       StreamReader sr = File.OpenText(testFile);

       while (true)

       {

           string str = sr.ReadLine();

           if (str == null)

               break;

           Console.WriteLine(str);

       }

       sr.Close();

       Console.WriteLine("Файл успешно создан");

       Console.ReadLine();

   }

}

}

Данная программа сразу после запуска проверяет существование рабочего файла в текущем каталоге:

If (File.Exists(testFile))

{

Console.WriteLine("Файл {0} уже существует", testFile);

Console.ReadLine();

return;

}

Если файл с именем mydata.txt существует в текущем каталоге, программа завершает свою работу с сообщением об ошибке. В противном случае программа создает текстовый файл и открывает поток для работы с ним класса StreamWriter:

StreamWriter sw = File.CreateText(testFile);

Как видите, эта операция выполняется методом CreateText, определенным в классе File. Аналогичного эффекта можно было бы достичь и с помощью следующего конструктора класса StreamWriter:

StreamWriter sw = new StreamWriter(testFile, false);

Первый параметр этого конструктора определяет полный путь к открываемому файлу. Если значение второго параметра равно true, новые данные будут добавлены к файлу, а если false — содержимое файла будет перезаписано.

Для открытия текстового файла на запись вы можете использовать любой из этих конструкторов. Заметим, что в классе StreamWriter имеются и другие конструкторы, позволяющие, например, задать кодировку текстовых символов, записываемых в файл.

После того как поток StreamWriter открыт, программа может записывать в него текстовые строки, пользуясь хорошо известными вам методами Write и WriteLine:

sw.WriteLine("Каждый охотник желаетзнать, где сидит фазан!");

sw.WriteLine ("Число \"Пи\" равно примерно {0}.", 3.1415926);

Когда запись новых данных в поток завершена, необходимо закрыть поток методом Close:

sw.Close();

Теперь о чтении данных из текстового файла. Прежде всего, программа должна открыть поток класса StreamReader, привязав его к файлу. Это можно сделать методом File.OpenText:

StreamReader sr = File.OpenText(testFile);

Вы можете также открыть поток и привязать его к файлу с помощью конструктора класса StreamReader:

StreamReader sr = new StreamReader(testFile);

 

Далее наша программа считывает текстовые строки из файла, вызывая в цикле метод ReadLine:

While(true)

{

string str = sr.ReadLine();

if(str == null)

break;

Console.WriteLine(str);

}

Этот метод возвращает прочитанную строку или значение null при достижении конца файла. После завершения работы с потоком StreamReader его следует закрыть методом Close:

sr.Close();

Таким образом, приведенная выше программа записывает две строки в файл, а затем читает их оттуда и отображает на консоли:

При повторном запуске, однако, результат будет совершенно другой:

Это совершенно нормально, т.к. программа включает проверку существования файла и в случае его обнаружения завершает работу.



Содержание отчета

Отчет по работе должен содержать:

1. Цель работы

2. Вариант задания на выполнение работы

3. Алгоритм программы на псевдокоде (для каждой функции отдельно).

4. Исходный текст программы.

5. Результаты выполнения программы, включающие для каждого варианта исходных данных копию экрана и распечатки входного файла (файлов) и выходного файла.

Варианты выполнения работы

Создать исходный и выходной файлы, обработать их по указанному варианту:

 

Исходный файл состоит из строк, в каждой из которых записаны данные о студенте в следующем порядке:

· Фамилия и инициалы

· Номер группы

· Успеваемость (массив из пяти элементов)

Записать в выходной файл следующие данные:

1. Фамилии и номера групп для всех студентов, у которых средний балл превышает 4.0 (если таких студентов нет, записать в файл соответствующее сообщение)

2. Фамилии и номера групп для всех студентов, имеющих оценки только 4 и 5 (если таких студентов нет, записать в файл соответствующее сообщение)

3. Фамилии и номера групп для всех студентов, имеющих хотя бы одну оценку 2 (если таких студентов нет, записать в файл соответствующее сообщение)

4. Средний балл для студентов заданной группы

5. Лучших студентов по среднему баллу в каждой группе

 

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

· Фамилия и инициалы

· Номер бригады

· Табельный номер

· Дата планируемого ухода в отпуск (число и месяц)

· Дата выхода из отпуска (число и месяц)

Записать в выходной файл следующие данные:

 

 

6. Для заданного номера бригады все фамилии и имена числящихся в ней рабочих.

7. Для заданного интервала табельных номеров (минимальный и максимальный номер) все фамилии, имена и номера рабочих, чьи номера попадают в заданный интервал.

8. Для заданной фамилии рабочего – всех рабочих с данной фамилией и номера бригад, где они числятся

9. Для заданного месяца – фамилии и имена рабочих, отдыхающих в данном месяце

10. Для заданного номера бригады – имя и фамилию рабочего, имеющего максимальную продолжительность отпуска

 

Исходный файл состоит из строк, в каждой из которых записаны данные об авиарейсе в следующем порядке:

· Название пункта назначения рейса

· Номер рейса

· Тип самолета

· Время в пути (часы и минуты)

Записать в выходной файл следующие данные:

11. Номера рейсов и типы самолетов, вылетающих в пункт назначения, название которого совпадает с названием, введенным с клавиатуры (если таких рейсов нет, записать в файл и выдать на экран соответствующее сообщение)

12. Номера рейсов и пунктов назначения, обслуживаемых самолетами, тип которых совпадает с типом, введенным с клавиатуры (если таких рейсов нет, записать в файл и выдать на экран соответствующее сообщение)

13. Номер рейса и тип самолета, имеющего для заданного пункта назначения максимальное время в пути.

14. Для заданного типа самолета и времени в пути - все номера рейсов и пункты назначения, для которых время в пути превышает заданное.

15. Для заданного типа самолета и пункта назначения – все номера рейсов и их время в пути.

 

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

· Название книги

· Фамилия И.О. автора

· Год выпуска

· Издательство

· Тираж

· Количество страниц

Записать в выходной файл следующие данные:

 

16. Названия книг и их годы выпуска для автора, фамилия которого вводится с клавиатуры.

17. Названия книг и фамилии их авторов для издательства, название которого вводится с клавиатуры.

18. Названия книг и фамилии их авторов для заданного издательства, вышедших не позже года, значение которого вводится с клавиатуры.

19. Для заданного издательства определить автора, выпустившего максимальную по количеству страниц книгу.

20. Для заданного года выпуска определить автора и название книги, имевший наименьший тираж.

 

Исходный файл состоит из строк, в каждой из которых записаны данные о поезде в следующем порядке:

· Название пункта отправления поезда

· Название пункта назначения поезда

· Количество вагонов поезда

· Номер поезда

· Время в пути

Записать в выходной файл следующие данные:

21. Для заданного пункта отправления – все пункты назначения поездов, куда можно доехать в виде:

· Название пункта назначения поезда

· Номер поезда

· Время в пути

22. Для заданного номера поезда – все прочие поезда, идущие в тот же пункт назначения, что и указанный поезд в виде:

· Номер поезда

· Название пункта отправления

· Название пункта назначения

23. Для заданного пункта назначения – все поезда, идущие в этот пункт и имеющие количество вагонов не меньше заданного в виде:

· Номер поезда

· Название пункта отправления

· Количество вагонов

24. Для заданного номера поезда – все поезда, имеющие тот же пункт отправления и количество вагонов не меньше, чем у заданного в виде:

· Номер поезда

· Название пункта назначения

· Количество вагонов

25. Для заданного номера поезда – все поезда, имеющие время в пути меньше, чем у заданного в виде:

· Номер поезда

· Название пункта отправления

· Название пункта назначения

· Время в пути

 

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

· Фамилия И.О. автора статьи

· Название статьи

· Название журнала

· Номер выпуска

· Год выпуска

· Номер начальной и конечной страницы (два числа)

Записать в выходной файл следующие данные:

 

26. Для заданного названия журнала и года выпуска – все напечатанные в этом журнале статьи в виде:

· Фамилия И.О. автора

· Название статьи

· Номер выпуска

· Номер начальной и конечной страницы

 

27. Для заданной фамилии автора и названия журнала – все его статьи, напечатанные в этом журнале в виде:

· Название статьи

· Год выпуска

· Номер выпуска

· Номер начальной и конечной страницы

 

28. Для заданного года выпуска определить автора, напечатавшего больше всего статей в одном и том же журнале

29. Для заданного журнала определить автора, напечатавшего больше всего статей за один год.

30. Для заданного года выпуска определить автора, статьи которого имели максимальное суммарное количество страниц

Оформление отчета

В отчет включить:

· Тема и цель работы;

· Задание на выполнение;

· Алгоритм программы в виде псевдокода;

· Текст программы с комментариями;

· Результаты выполнения программы для различных исходных данных.


 

Приложение: Оформление титульного листа

 

Министерство образования и науки РФ

Тверской государственный технический университет

Кафедра автоматизации технологических процессов

 

Отчет к лабораторной работе № 1

по дисциплине «Информационные технологии»

Обработка текстовых файлов

 

Выполнил:

(Номер группы)

(Фамилия И.О.)

        

Принял:

 

Тверь, 2017

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 362.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...