Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MU_Prakticheskie_raboty_OPI.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
9.91 Mб
Скачать

Копирование файла.

Одно из достоинств байтового ввода-вывода с использованием класса FileStream заключается в том, что этот класс можно использовать для всех типов файлов, а не только текстовых.

public static void Main(string[] args)

{

int i;

FileStream fin = new FileStream(args[0], FileMode.Open);

FileStream fout = new FileStream(args[1], FileMode.Create);

// Копируем файл,

try

{

do

{

i = fin.ReadByte();

if (i != -1) fout.WriteByte((byte)i);

} while (i != -1);

}

catch (IOException exc)

{

Console.WriteLine(exc.Message + "Ошибка при чтении файла. ");

fin.Close();

fout.Close();

}

Файловый ввод–вывод с ориентацией на символы.

Следующие методы определяют базовые механизмы символьного ввода–вывода.

Для класса TextReader:

Методы класса TextReader

Назначение

int Peek()

Reads the next character without changing the state of the reader or the character source. Returns the next available character without actually reading it from the input stream

int Read()

Перегруженные. Несколько одноименных функций с одним и тем же именем. Читает значения из входного потока. Вариант int Read() предполагает чтение из потока одного символа с возвращением его целочисленного эквивалента или –1 при достижении конца потока. Вариант int Read (char[] buff, int index, int count) и его полный аналог int ReadBlock(char[] buff, int index, int count) обеспечивает прочтение a maximum of count characters из текущего потока и записывает данные в buffer, начиная at index

string ReadLine()

Читает строку символов из текущего потока. Возвращается ссылка на объект типа string

string ReadToEnd()

Читает все символы, начиная с текущей позициисимвольного потока, определяемого объектом класса TextReader и возвращает результат как ссылка на объект типа string

void Close()

Закрывает поток ввода

Для класса TextWriter:

Методы класса TextWriter

Назначение

void Write()

множество перегруженных вариантов функции со значениями параметров, позволяющих записывать символьное представление значений базовых типов (смотреть список базовых типов) и массивов значений (в том числе и массивов строк)

void Flush()

Clears all buffers for the current writer and causes any buffered data to be written to the underlying stream. Очистка буфера вывода с предварительным выводом в поток вывода (носитель данных) содержимого буфера

void Close()

Закрывает поток вывода.

Эти классы являются базовыми для классов:

  • StreamReader – содержит свойства и методы, обеспечивающие считывание СИМВОЛОВ из байтового потока,

  • StreamWriter – содержит свойства и методы, обеспечивающие запись СИМВОЛОВ в байтовый поток.

Интересно заметить, что у всех ранее перечисленных классов имеются методы, обеспечивающие закрытие потоков и не определены методы обеспечивающие открытие соответствующего потока. Потоки открываются в момент создания объекта–представителя соответствующего класса. Наличие функции, обеспечивающей явное закрытие потока принципиально. Оно связано с особенностями выполнения управляемых модулей в Framework.NET. Время начала работы сборщика мусора заранее неизвестно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]