Каждый прочитанный байт преобразуется в 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;