Пример 2. namespace ConsoleApplication2

using System;

using System.IO;

namespace ConsoleApplication2

{

class Program

{

static void Main(string[] args)

{

int i;

FileStream fin;

FileStream fout;

// открытие исходного файла

try

{

fin = new FileStream("first.txt", FileMode.Open);

}

catch (FileNotFoundException exc)

{

Console.WriteLine(exc.Message + "\n Исходный файл не найден");

return;

}

// открытие файла-копии

try

{

fout = new FileStream("second.txt", FileMode.Create);

}

catch (FileNotFoundException exc)

{

Console.WriteLine(exc.Message + "\n Ошибка создания файла-копии");

return;

}

catch(IndexOutOfRangeException exc)

{

Console.WriteLine(exc.Message+"\nUsage file.txt");

return;

}

//Копирование файла

try

{

do

{

i=fin.ReadByte();

if(i!=-1) fout.WriteByte((byte) i);

}

while(i!=-1);

}

catch(IOException exc)

{

Console.WriteLine(exc.Message + "Файловая ошибка");

return;

}

fin.Close();

fout.Close();

}

}

}

Ввод/вывод в символьные файлы

Для автоматического преобразования байтовых потоков в символьные и наоборот используются классы StreamReader и StreamWriter. При выполнении файловых операций, основанных на использовании символов, класс FileStream включается в состав класса StreamReader или StreamWriter.

Использование класса StreamWriter

Для создания символьного потока вывода объект File Stream включается в состав класса StreamWriter следующим образом:

StreamWriter(Stream stream)

Параметр stream указывает имя открытого потока. Если указанный поток будет пуст, конструктор вызывает исключение ArgumentException, а если stream равен нулю, вызывается исключение ArgumentNullException. Сразу же после создания класс StreamWriter автоматически выполняет преобразование символов в байты.

В некоторых случаях можно открыть файл напрямую, используя класс StreamWriter. При этом используется один из указанных ниже конструкторов:

StreamWriter (string filename)

StreamWriter (string filename, bool appendFlag)

filename – имя открываемого файла.

При использовании конструктора второго вида данные будут добавляться в конец существующего файла, если флагу appendTrue присвоено значение true. Если же упомянутому флагу присвоено значение false, данные будут вмещать содержимое указанного файла. При отсутствии файла в обоих случаях происходит его создание. Также в обоих случаях генерируется исключение IOException в случае наличия ошибки.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: