Открытые методы класса FileStream
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой
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, просмотров: 263.