
- •1 Классы потоков
- •1.3 Символьные классы потоков
- •2.1.2 Запись данных в консольный входной поток
- •2.2 Класс FileStream. Файловый побайтовой ввод-вывод
- •2.2.1 Открытие и закрытие файла
- •2.2.2 Считывание байт из объекта класса FileStream..
- •2.3 Файловый ввод-вывод с ориентацией на символы
- •2.3.1 Использование класса StreamWriter
- •2.3.2 Использование класса StreamReader
- •2.4 Перенаправление стандартных потоков
- •2.5 Считывание и запись двоичных данных
- •2.5.1 Класс BinaryWriter
- •Класс BinaryReader
- •Применение двоичного ввода-вывода
- •2.7 Считывание входных данных из массива и запись их в массив
- •2.9 Преобразование числовых строк во внутреннее представление
2.4 Перенаправление стандартных потоков
№ 10
Два способа перенаправления:
1. Оператоы ”< “ и/или “>” Пример:
Using System;
Class Test {
Public static void Main() {
Console.WriteLine(“Это тест.”);
}
}
В командной строке > Test > log // Текст «Этот тест» запишется в файл log
2. способ – переправляет стандартные потоки программно. Используются методы: Setin(), SetOut(), SetError() – члены класса Console:
static void SetIn(TextReader input)
static void SetOut(YextWriter output)
static void SetError(TextWriter output)
// Перенаправление потока Console.Out
using System;
using System.IO;
class Redirect
{
public static void Main()
{
StreamWriter log_out;
try
{
Console.WriteLine("\n U1 ");
log_out = new StreamWriter("logfile.text");
Console.WriteLine("\n U2 ");
}
catch (IOException exc)
{ Console.WriteLine("\n U3 ");
Console.WriteLine(exc.Message + " Не удается открыть файлю");
return;
}
// Направляем стандартный поток в системный журнал
Console.WriteLine("\n U4 ");
// Console.SetOut(log_out);
Console.WriteLine("\n Это начало системного журнала.");
for (int i = 0; i < 10; i++) Console.WriteLine(" " + i);
Console.WriteLine(" Это конец системного журнала.");
// Console.WriteLine("\n\n\n ");
log_out.Close();
Console.WriteLine("\n\n\n U5");
}
}
Рис 10 Результаты перенаправления стандартных потоков
2.5 Считывание и запись двоичных данных
Здесь рассматривается считывание и запись двоичных данных различных типов С# (дополнительно к рассмотренным ранее байтовых и символьных данных рассматриваются представление данных типов int, double, short, long). Для этого используются классы BinaryReader и BinaryWriter.
2.5.1 Класс BinaryWriter
Этот класс является оболочкой для байтового поока, которая управляет записью двоичных данных. Наиболее употребительный консьруктор имеет вид:
BinaryWriter(Stream outputStream)
Здесь outputStream – поток, в который будут записываться данные, при этом могут генерироваться ИС:
ArgumentNullException – генерируются null-значения;
ArgumentException- поток не открыт для записи.
В классе BinaryWriter определены методы, способные записывать значения всех встроенных С#-типов (см. таблицу)
№ |
Методы |
Описание |
1 |
Void Write(sbyte val) |
Записывает byte-значение (со знаком) |
2 |
Void Write(byte val) |
Записывает byte-значение (без знака) |
3 |
Void Write(byte[] buf) |
Записывает массив byte-значений |
4 |
Void Write(short val) |
Записывает целочисленное значение типа short (короткое целое) |
5 |
Void Write(ushort val) |
Записывает целочисленное ushort-значение (короткое целое без знака) |
6 |
Void Write(int val) |
Записывает целочисленное значение типа int |
7 |
Void Write(uint val) |
Записывает целочисленное uint-значение (целое без знака) |
8 |
Void Write(long val) |
Записывает целочисленное значение типа (длинное целое) |
9 |
Void Write(ulong val) |
Записывает целочисленное ulong-значение (длинное целое без знака) |
10 |
Void Write(float val) |
Записывает float-значение |
11 |
Void Write(double val) |
Записывает double-значение |
12 |
Void Write(char val) |
Записывает символ |
13 |
Void Write(char[] buf) |
Записывает массив символов |
14 |
Void Write(string val) |
Записывает string-значение с использованием его внутреннего представления, котоое включает спецификатор длины |