Public abstract class Stream : MarshalByRefObject, IDisposable
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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, просмотров: 268.