Создание Windows-приложений на основе Visual C#



Чтение и запись двоичных файлов


Для более общего способа чтения и записи файлов используются классы BinaryReader и BinaryWriter, предназначенные для чтения двоичных данных. Любой файл в конечном итоге представляет собой набор двоичных данных, следовательно, эти данные можно считывать и записывать во внутреннем, двоичном формате. Класс BinaryWriter представляет собой оболочку для байтового потока, управляющей записью двоичных данных. Класс BinaryReader является оболочкой, содержащей байтовый поток, и выполняет чтение двоичных данных.

Рассмотрим приложение, позволяющее считывать файл формата MP3 и записывать фрагмент этого файла. Создайте новое консольное приложение и назовите его BinaryReadWrite. В папку bin/Debug поместите любой музыкальный файл формата MP3, имеющийся на вашем компьютере.

Подключаем пространство имен:

using System.IO;

Добавляем код:

[STAThread] static void Main(string[] args) { //Добавляем блок обработки исключений try { //Создаем новый поток Chtenie и указываем файл для чтения — music.mp3 FileStream Chtenie = new FileStream("music.mp3", FileMode.Open);

//Создаем экземпляр br класса BinaryReader и //связываем его с потоком Chtenie BinaryReader br = new BinaryReader(Chtenie);

// Создаем массив типа байтов и //передаем ему размер в байтах – (например, 1000000) записываемого файла byte[] n = br.ReadBytes(1000000); //Закрываем поток br.Close(); //Создаем новый поток Zapis и указываем название //файла для записи sozdanajamuzika.mp3 FileStream Zapis = new FileStream("newmusic.mp3", FileMode.CreateNew, FileAccess.Write); //Создаем экземпляр wr класса BinaryWriter и //связываем его с потоком Zapis BinaryWriter wr = new BinaryWriter(Zapis); // Можно связывать объект wr с потоком создавая его без названия: //BinaryWriter wr = new BinaryWriter(new FileStream("sozdanajamuzika.mp3", //FileMode.CreateNew, FileAccess.Write)); //Передаем в поток массив байтов n wr.Write(n); //Закрываем поток br.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); }




Содержание  Назад  Вперед