Рассмотрим пример программы, которая считывает строки текста, введенного с клавиатуры, а затем записывает его в файл test.txt. Считывание текста продолжается до тех пор, пока пользователь не введет слово «stop».
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string str;
StreamWriter fstr_out;
try
{
fstr_out = new StreamWriter("test.txt");
}
catch (IOException exc)
{
Console.WriteLine(exc.Message+"Невозможно открыть файл");
return;
}
Console.WriteLine("Введите текст stop для выхода");
do
{
Console.WriteLine("Введите строку файла:");
str = Console.ReadLine();
if (str!= "stop")
{
str = str + "\r\n";
try
{
fstr_out.Write(str);
}
catch (IOException exc)
{
Console.WriteLine(exc.Message + "Файловая ошибка");
return;
}
}
}
while (str!= "stop");
fstr_out.Close();
}
}
}
Использование класса StreamReader
Для создания символьного потока ввода байтовый поток включается в класс StreamReader следующим образом:
StreamReader(Stream stream)
Параметр stream определяет имя открытого потока. Сразу же после создания класс StreamReader будет автоматически выполнять преобразование байтов в символы.
Пример 4.
|
|
Следующая программа считывает текстовый файл test.txt и отображает его содержимое на экране.
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string str;
FileStream fin;
try
{
fin = new FileStream("test.txt", FileMode.Open);
}
catch (IOException exc)
{
Console.WriteLine(exc.Message+"Невозможно открыть файл");
return;
}
StreamReader fstr_in = new StreamReader(fin);
while ((str = fstr_in.ReadLine())!= null)
Console.WriteLine(str);
fstr_in.Close();
}
}
}
Обратите внимание на то, каким образом определяется конец файла. Как только ссылка, возвращаемая методом ReadLine, получит значение, равное нулю, это укажет на достижение конца файла.
Как и в случае с классом StreamWriter, в некоторых случаях можно открыть файл непосредственно, воспользовавшись возможностями класса StreamReader. Для выполнения этой операции служит следующий конструктор:
StreamReader(string filename)
Параметр filename указывает имя открываемого файла. Если файл не существует, генерируется исключение IOException. Если параметр filename представляет собой пустую строку, генерируется исключение ArgumentException.