Public class FileStream : Stream
Public class MemoryStream : Stream
Public abstract class TextReader : MarshalByRefObject, Idisposable
Public abstract class TextWriter : MarshalByRefObject, Idisposable
Public class StreamReader : TextReader
Public class StreamWriter : TextWriter
Public class StringReader : TextReader
Public class StringWriter : TextWriter
Public class BinaryReader : Idisposable
Public class BinaryWriter : Idisposable
Основные классы.
Потоковые: FileStream, StreamReader, StreamWriter, BinaryReader, BinaryWriter, Console.
Непотоковые: File.
рис. 5
Другие классы: MemoryStream, NetworkStream, BufferedStream, CryptoStream.
Консольный ввод-вывод данных
C#-программы в пространстве имен System могут использовать:
• стандартный входной поток Console.In, в который вводится информация с клавиатуры;
• стандартный выходной поток Console.Out, в который выводится информация, направляемая в консоль (на экран);
• стандартный выходной поток Console.Error сообщений об ошибках, в который выводится информация, направляемая в консоль (на экран).
Console.In, Console.Out и Console.Error – это свойства класса Console, значением которых являются соответствующие символьные потоки (объекты).
Примеры ввода-вывода:
Console.ReadLine(…) и Console.WriteLine(…).
Console.Out и Console.Error — объекты типа TextWriter. Поток Console.In - объект типа TextReader.
Для доступа к этим потокам можно использовать методы и свойства, определенные в классах TextWriter и TextReader соответственно. Однако это целесообразно делать только для потока Console.Error:
Public static void Main()
{
int a, b=7, c=0;
try
{
a = b / c; // Деление на нуль: генерируем исключение.
}
catch (DivideByZeroException exc)
{
Console.Error.WriteLine (exc.Message);
}
}
У стандартных потоков можно, не переделывая программу, менять источник и приемник информации (т.е. перенаправлять поток).
Перенаправить стандартный поток можно двумя способами.
1) средствами Windows (внешними);
Из программы (внутренними средствами) с помощью методов SetIn(), SetOut() и SetError(), которые являются членами класса Console.
Способ 1. Средствами Windows все стандартные потоки, кроме потока ошибок, могут быть перенаправлены при запуске программы (то есть временно) на любое совместимое устройство ввода-вывода.
Для этого при запуске программы из командной строки можно использовать оператор "<", чтобы перенаправить поток Console.In и операторы ">" и ">>" для перенаправления потока Console.Out.
Примеры.
example.exe > NewFile.txt
example.exe >> OldFile.txt
example.exe < OldFile.txt
example.exe > NewFile.txt < OldFile.txt
Способ 2. Перенаправление осуществляется с помощью методов SetIn(), SetOut() и SetError(), которые являются членами класса Console:
Формат:
Static void SetIn (TextReader input)
Static void SetOut (TextWriter output)
Static void SetError (TextWriter output)
Такое перенаправление имеет постоянное действие и его нельзя отменить или повторно перенаправить при запуске программы.
Пример .
using System;
using System.IO;
Class Redirect
{
public static void Main()
{
StreamWriter log_out = new StreamWriter("C:\\logfile.txt");
// Направляем стандартный выходной поток в системный журнал.
Console.SetOut(log_out);
Console.WriteLine ("Это начало системного журнала.");
for (int i = 0; i < 10; i++) Console.WriteLine(i);
Console.WriteLine ("Это конец системного журнала.");
log_out.Close();
}
}
Можно указывать любой поток, если он является производным от класса TextReader или TextWriter.
Чтение и запись двоичных файлов
(потоковый файловый ввод-вывод)
Дата: 2019-02-02, просмотров: 300.