Каждый прочитанный байт преобразуется в int. При обнаружении конца файла метод возвращает —1.


Чтобы считать массив байтов:

int Read (byte[ ] buf, int offset, int numBytes)

Метод Read() пытается считать numBytes байтов в массив buf, начиная с элемента buf[offset]. Он возвращает количество успешно считанных байтов.

ЗАПИСЬ:

Чтобы записать 1 байт в файл:

Void WriteByte (byte val)

Чтобы записать в файл массив байтов:

void Write (byte[ ] buf, int offset, int numBytes)

Метод Write() записывает в файл numBytes байтов из массива buf, начиная с элемента buf [offset].

Исключения:

IOException ошибка ввода-вывода
NotSupportedException поток не открыт для ввода/вывода данных
ObjectDisposedException поток закрыт

Если вы хотите записать данные на физическое устройство вне зависимости от того, полон буфер или нет, вызовите следующий метод:

Void Flush ()

Пример. Копирование файла (без обработки исключений).

Программа CopyFile копирует файл любого типа, включая выполняемые файлы. Имена исходного и приемного файлов указываются в программе.

using System;

using System.IO;

Class CopyFile

{

Public static void Main(void)

{

int i;

FileStream fin, fout;

// Открываем входной файл.

fin = new FileStream ("c:\\source.txt", FileMode.Open);

// Открываем выходной файл.

fout = new FileStream ("c:\\target.txt", FileMode.Create);

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

While (true)

{

i = fin.ReadByte();

if (i == -1) break;

fout.WriteByte ( (byte)i );

}

fin.Close(); fout.Close();

}

}

Пример. Копирование файла с обработкой исключений.

Имена исходного и приемного файлов указываются в командной строке.

/*

Для использования этой программы укажите при запуске имя исходного и приемного файлов.

Например, чтобы скопировать файл FIRST.DAT в файл SECOND.DAT, используйте следующую командную строку:

CopyFile FIRST.DAT SECOND.DAT

*/

using System;

using System.IO;

Class CopyFile

{

public static void Main(string[] args)

{

int i ;

FileStream fin ;

FileStream fout ;

Try

{

// Открываем входной файл.

Try

{

i = 1;

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

}

Catch (FileNotFoundException exc)

{

Console.WriteLine(exc.Message + "\nВходной файл не найден.");

return;

}

// Открываем выходной файл.

Try

{

i = 2;

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

}

Catch (IOException exc)

{

Console.WriteLine ( exc.Message +

"\nОшибка при открытии выходного файла.");

return;

}

}

catch (IndexOutOfRangeException exc) // ошибка извлечения строки из массива args[]

{

Console.WriteLine(exc.Message +

"\nНе указано имя файла {0} в командной строке", i );

return;

}

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

Try

{

do

{

i = fin.ReadByte();

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

} while (i != -1);

}



Дата добавления: 2019-02-08; просмотров: 607;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.