Flush | Переопределен. Инициирует запись всех буферизованных данных на основное устройство и очищает все буферы для данного потока. |
Read | Переопределен. Чтение блока байтов из потока и запись данных в заданный буфер. |
ReadByte | Переопределен. Считывание байта из файла и перемещение положение чтения на один байт. |
Write | Переопределен. Запись блока байтов в данный поток с использованием данных из буфера. |
WriteByte | Переопределен. Запись байта в текущую позицию в потоке файла. |
ЧТЕНИЕ:
Можно прочитать любой файл. Чтобы прочитать из файла один байт:
int ReadByte()
Каждый прочитанный байт преобразуется в 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);
}
catch (IOException exc)
{
Console.WriteLine(exc.Message +
"Ошибка при чтении/записи файла.");
}
fin.Close();
fout.Close();
}
}
Дата: 2019-02-02, просмотров: 293.