работа с файлами / ЛР№15 - C#, Файлы
.pdf
|
11 |
|
Readlnt64 |
Число со знаком размером 8 байт |
|
|
|
|
ReadUIntl6 |
Число без знака размером 2 |
байта |
|
|
|
ReadUInt32 |
Число без знака размером 4 |
байта |
|
|
|
ReadUInt64 |
Число без знака размером 8 |
байт |
|
|
|
ReadString |
Текстовая строка с префиксом длины |
|
|
|
|
4.2 Работа с текстовыми файлами
Хотя рассмотренные в предыдущем разделе потоки FileStream, BinaryWriter и BinaryReader можно использовать для записи в файлы и чтения из файлов текстовых строк, лучше прменять спе- циально предназначенные для этого средства. Речь идет о потоках классов StreamWriter и StreamReader. Эти потоки чрезвычайно просты в использовании и удобны для работы с текстовыми фай- лами.
Основные приемы использования потоков StreamWriter и StreamReader демонстрируются в программе, исходный текст которой приведен ниже:
using System; using System.IO; namespace TextFile
{
class TextFileApp
{
private const 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();
}
}
}
12
Программа сразу после запуска проверяет существование рабочего файла в текущем каталоге:
private const string testFile = "mydata.txt"; 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);
Далее наша программа считывает текстовые строки из файла, вызывая в цикле метод Read-
Line:
while(true)
13
{
String str = sr.ReadLine();
if(str == null)
break;
Console.WriteLine(str);
}
Этот метод возвращает прочитанную строку или значение null при достижении конца файла. После завершения работы с потоком StreamReader его следует закрыть методом Close:
sr.Close();
Таким образом, наша программа записывает две строки в файл, а затем читает их оттуда и отображает на консоли.
14
5. Задания
1) Записать в текстовый файл результат расчета функции f(y) . Результат должен быть запи- сан в виде двух столбцов – аргумента и значения функции от данного аргумента. Начало и конец диапазона, имя файла, а также шаг расчета вводить с клавиатуры.
Вариант Задание
1f(y) = y*y
2f(y) = y*y*y
3f(y) = cos(y)
4f(y) = sin(y)
5f(y) = sin(y)*cos(y)
6f(y) = sin(y)*y
7f(y) = cos(y)*y
8f(y) = sin(y)*cos(y)*y
9f(y) = sin(y)*y*y
10f(y) = cos(y)*y*y
2)Считать файл, вывести на экран среднее арифметическое.
15
6 Контрольные вопросы
16
Литература
1.Аветисян Р. Д., Аветисян Д. В. Теоретические основы информатики. — М.: РГГУ, 1997.
2.Бауэр Ф.Л., Гооз Г. Информатика. Вводный курс: В 2 ч. 4.2: Пер. с нем. — М.: Мир, 1990.
3.Информатика в понятиях и терминах. — М.: Просвещение, 1991.
4.Информатика. Энциклопедический словарь для начинающих. — М.: Педагогика-Пресс, 1994.
5.Основы информатики и вычислительной техники / А. Г. Гейн, В. Г.Житомирский, Е.В.Линецкий и др. — М.: Просвещение, 1991.
6.Веретенникова Е.Г. и др. Информатика: Учебное пособие / Веретенникова Е.Г. и др.; Е. Г. Веретенникова, С. М. Патрушина, Н. Г. Савельева . - Ростов н/Д.: Изд-кий центр "Март", 2002. - 416с.
7.Королев Л. Н. Информатика. Введение в компьютерные науки: Учебник / Л. Н. Королев, А. И. Миков; Л. Н. Королев, А. И. Миков . - М.: Высш. шк., 2003. - 341с.
8.Симонович С. В. Общая информатика: Учебное пособие / С. В. Симонович, Г. А. Евсеев, А. Г. Алексеев. - М.: АСТ- ПРЕСС КНИГА, 2004. - 592с.
9.Информатика. Базовый курс: Под ред. Симановича С. В. - 2-е изд. - СПб.: Питер, 2006. - 640с.
10.Алексеев А. П. Информатика 2007 / А. П. Алексеев. - М.: Солон-Пресс, 2007. - 608с. 2 экз.
11.Степанов А.Н. Информатика: Учебное пособие / А. Н. Степанов. - СПб.: Питер, 2002. - 608с.
12.Острейковский В. А. Информатика: Учебник / В. А. Острейковский. - 3-е изд., стер. - М.: Высшая школа, 2005. - 511с.
13.Конев Ф. Б. Информатика для инженеров: Учебное пособие / Ф. Б. Конев. - М.: Высшая школа, 2004. - 272с.