Применение касса StreamReader - C#
Формулировка задачи:
Изучаю работу с символьными потоками ввода-вывода данных, в книге есть пример демонстрирующий применение класса StreamReader, где программа выводит на экран данные текстового файла:
После примера идет краткое объяснение работы программы и как можно делать еще
Примера с использованием непосредственно класса StreamReader нет и я решил попробовать сделать это сам, но к сожалению не выходит. Программа запускается, ошибок и сообщений об исключениях не выдает, но и содержимое текстового файла на экран не выводит. Вот что сделал:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
class Demo
{
static void Main(string[] args)
{
FileStream fin;
string s;
try
{
fin = new FileStream("test.txt", FileMode.Open);
}
catch (IOException exc)
{
Console.WriteLine("Ошибка открытия файла:\n" + exc.Message);
return;
}
StreamReader fstr_in = new StreamReader(fin);
try
{
while ((s = fstr_in.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
catch (IOException exc)
{
Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message);
}
finally
{
fstr_in.Close();
}
Console.ReadLine();
}
}
Иногда файл проще открыть, используя непосредственно класс StreamReader,
аналогично классу StreamWriter. Для этой цели служит следующий конструктор:
StreamReader(string путь)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
class Demo
{
static void Main(string[] args)
{
StreamReader fstr_in = null;
string s;
try
{
fstr_in = new StreamReader("test.txt");
}
catch (IOException exc)
{
Console.WriteLine("Ошибка открытия файла:\n{0}", exc.Message);
}
try
{
while (fstr_in.EndOfStream)
{
s = fstr_in.ReadLine();
Console.WriteLine(s);
}
}
catch (IOException exc)
{
Console.WriteLine("Ошибка ввода-вывода:\n{0}", exc.Message);
}
finally
{
fstr_in.Close();
}
Console.ReadLine();
}
}Решение задачи: «Применение касса StreamReader»
textual
Листинг программы
while (!fstr_in.EndOfStream)
{
....
}