str = str + "\r\n"; // добавить новую строку fstr_out.Write(str);
}
} while(str != "стоп");
} catch(IOException exc) {
Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message);
} finally {
if(fstr_out != null) fstr_out.Close ;
}
}
}
Применение класса StreamReader
StreamReader(Stream
где
В приведенном ниже примере создается простая сервисная программа ввода с диска и вывода на экран содержимого текстового файлаtest. txt.Она служит дополнением к представленной ранее сервисной программе ввода с клавиатуры и вывода на диск.
// Простая сервисная программа ввода с диска и вывода на экран,
// демонстрирующая применение класса StreamReader.
using System; using System.10;
class DtoS {
static void Main {
FileStream fin; string s;
try {
fin = new FileStream("test.txt", FileMode.Open);
catch(IOException exc) {
Console.WriteLine("Ошибка открытия файла:\п" + 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;
}
}
}
Обратите внимание на то, как в этой программе определяется конец файла. Когда методReadLine возвращает пустую ссылку, это означает, что достигнут конец файла. Такой способ вполне работоспособен, но в классеStreamReaderпредоставляется еще одно средство для обнаружения конца потока —EndOfStream.Это доступное для чтения свойство имеет логическое значениеtrue,когда достигается конец потока, в противном случае — логическое значениеfalse.Следовательно, свойствоEndOf Streamможно использовать для отслеживания конца файла. В качестве примера ниже представлен другой способ организации циклаwhileдля чтения из файла.
while(!fstr_in.EndOfStream) { s = fstr_in.ReadLine;
Console.WriteLine(s);
}