Примеры


Специальные операции

Операции ввода-вывода

Установочные и завершающие операции

Используя классы BinaryWriter и BinaryReader можно создать свои файловые объекты для выполнения различных файловых операций

//создание нового файла или перезапись существующегоBinaryWriter outBin = new BinaryWriter (File.Open("c:\\temp\\a1.dat", FileMode.Create ));//outBin - созданный нами объект //открытие существующего файла на чтениеBinaryReader inBin = new BinaryReader (File.Open("c:\\temp\\a1.dat", FileMode.Open));//inBin - созданный нами объект

Атрибут FileMode может быть выбран из следующего списка

FileMode.Append // открыть файл для дозаписиFileMode.Create // создание нового файла или перезапись существующегоFileMode.Open //открытие существующего файла на чтение

Для завершения работы с файлом используют метод Close.

outBin.Close();

Для записи в открытый файл используют метод Write.

outBin.Write(22.4);outBin.Write("Хелло ворлд!");outBin.Write(15);

Для чтения данных из открытого файла используют метод Read

Double m = inBin.ReadDouble();string q = inBin.ReadString();int j = inBin.ReadInt32();

Для проверки, достигнут ли конец файла при чтении используют метод PeekChar

while ((inBin.PeekChar())>=0) { e = inBin.ReadInt32(); Console.WriteLine(e); }

Удаление файла выполняется методом Delete объекта File:

string fileName = "c:\\temp\\a1.txt";File.Delete(fileName);

Проверка существования файла выполняется методом Exist объекта File:

if (File.Exist("c:\\temp\\a1.txt")) {//программный код, который//выполнится если файл существует}

Переименование/перенос файла выполняется методом Move объекта File:

string path = @"c:\temp\MyTest.txt";string path2 = @"c:\temp\MyTest.bak";File.Move(path, path2);Console.WriteLine ("Файл {0} был переименован в {1}.", path, path2);

Пример 1: Создать файл, содержащий целые числа. Из компонентов исходного файла сформировать файл, записав в него числа, расположенные в исходном файле до максимального элемента. Массивы использовать нельзя.

static void CreateFile(string filename) { BinaryWriter outBin = new BinaryWriter (File.Open(filename, FileMode.Create)); Console.Write("Введите количество элементов для записи в файл "); string s = Console.ReadLine(); int n = Convert.ToInt32(s); for (int i = 1; i <= n; i++) { Console.Write("Введите {0}-й элемент файла ",i); s = Console.ReadLine(); int m = Convert.ToInt32(s); outBin.Write(m); } outBin.Close(); } static int FindMax(string filename) { BinaryReader inBin = new BinaryReader (File.Open(filename, FileMode.Open)); int e , i,max,maxnum; e=i = maxnum = max = 0; while ((inBin.PeekChar())>=0) { e = inBin.ReadInt32(); if (i > 0) if (e > max) { max = e; maxnum = i; } else ; else max = e; i++; } inBin.Close(); return maxnum; }static void DoNewFile(string filename1,string filename2,int maxnum) { BinaryReader inBin = new BinaryReader (File.Open(filename1, FileMode.Open)); BinaryWriter outBin = new BinaryWriter (File.Open(filename2, FileMode.Create)); for (int i = 0; i < maxnum; i++) { int e = inBin.ReadInt32(); outBin.Write(e); } inBin.Close(); outBin.Close(); }static void PrintFile(string filename) { BinaryReader inBin = new BinaryReader (File.Open(filename, FileMode.Open)); while ((inBin.PeekChar()) >= 0) { int e = inBin.ReadInt32(); Console.WriteLine(e); } inBin.Close(); }static void Main(string[] args) { CreateFile("c:\\s1.dat"); int mn=FindMax("c:\\s1.dat"); DoNewFile("c:\\s1.dat", "c:\\s2.dat", mn); PrintFile("c:\\s2.dat"); Console.ReadKey(); }