Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

}

}

}

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

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);

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

while(true)

{

String str = sr.ReadLine();

if(str == null)

break;

Console.WriteLine(str);

}

Этот метод возвращает прочитанную строку или значение null при достижении конца файла.

После завершения работы с потоком StreamReader его следует закрыть методом Close:

sr.Close();

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





Дата публикования: 2015-10-09; Прочитано: 205 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...