Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Ниже приведен простой пример программы, в котором демонстрируется порядок записи данных в файл.




// Записать данные в файл.

Using System; using System.10;

class WriteToFile {

static void Main(string[] args) {

FileStream fout = null;

try {

// Открыть выходной файл.

fout = new FileStream("test.txt", FileMode.CreateNew);

// Записать весь английский алфавит в файл, for(char с = 'А'; с <= ' Z '; C++) fout.WriteByte((byte) с);

} catch(IOException exc) {

Console.WriteLine (."Ошибка ввода-вывода: \n" + exc.Message);

} finally {

if(fout!= null) fout.Close();

}

}

}

В данной программе сначала создается выходной файл под названием test. txt с помощью перечисляемого значения FileMode. CreateNew. Это означает, что файл с таким же именем не должен уже существовать. (В противном случае генерируется исключение IOException.) После открытия выходного файла в него записываются

Прописные буквы английского алфавита. По завершении данной программы содержимое файла test. txt оказывается следующим.

ABCDEFGHIJKLMNOPQRSTUVWXYZ

 

Использование класса FileStream для копирования файла

Преимущество байтового ввода-вывода средствами класса FileS tream заключается, в частности, в том, что его можно применить к файлам практически любого типа, а не только к текстовым файлам. В качестве примера ниже приведена программа, позволяющая копировать файл любого типа, в том числе исполняемый. Имена исходного и выходного файлов указываются в командной строке.

/* Копировать файл.

Чтобы воспользоваться этой программой, укажите имена исходного и выходного файлов. Например, для копирования файла FIR'ST.DAT в файл SECOND.DAT введите в командной строке следующее:

CopyFile FIRST.DAT SECOND.DAT

*/

Using System; using System.10;

class CopyFile {

static void Main(string[] args) { int i;

FileStream fin = null;

FileStream fout = null;

if(args.Length!= 2) {

Console.WriteLine("Применение: CopyFile Откуда Куда"); return;

}

try { 1

// Открыть файлы.

fin = new FileStream(args[0], FileMode.Open); fout = new FileStream(args[1], FileMode.Create);

// Скопировать файл, do {

i = fin.ReadByte();

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

} while (i!= -1);

} catch(IOException exc) {

Console.WriteLine("Ошибка ввода-вывода:\n" + exc.Message);

} finally {

if(fin!= null) fin.Close (); if(fout!= null) fout.Close ();

>

Символьный ввод-вывод в файл

Несмотря на то что файлы часто обрабатываются побайтово, для этой цели можно воспользоваться также символьными потоками. Преимущество символьных потоков заключается в том, что они оперируют символами непосредственно в уникоде. Так, если требуется сохранить текст в уникоде, то для этого лучше всего подойдут именно символьные потоки. В целом, для выполнения операций символьного ввода-вывода в файлы объект класса FileStream заключается в оболочку класса StreamReader или StreamWriter. В этих классах выполняется автоматическое преобразование байтового потока в символьный и наоборот.

Не следует, однако, забывать, что на уровне операционной системы файл представляет собой набор байтов. И применение класса StreamReader или StreamWriter никак не может этого изменить.

Класс StreamWriter является производным от класса Тех tW rite г, а класс StreamReader — производным от класса TextReader. Следовательно, в классах StreamReader и StreamWriter доступны методы и свойства, определенные в их базовых классах.

Применение класса StreamWriter

Для создания символьного потока вывода достаточно заключить объект класса Stream, например FileStream, в оболочку класса StreamWriter. В классе StreamWriter определено несколько конструкторов. Ниже приведен едва ли не самый распространенный среди них:

StreamWriter(Stream поток)

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

Ниже приведен простой пример сервисной программы ввода с клавиатуры и вывода на диск набранных текстовых строк, сохраняемых в файле test. txt. Набираемый тест вводится до тех пор, пока в нем не встретится строка "стоп". Для символьного вывода в файл в этой программе используется объект класса FileStream, заключенный в оболочку класса StreamWriter.

// Простая сервисная программа ввода с клавиатуры и вывода на диск,

// демонстрирующая применение класса StreamWriter.





Поделиться с друзьями:


Дата добавления: 2016-12-03; Мы поможем в написании ваших работ!; просмотров: 485 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Бутерброд по-студенчески - кусок черного хлеба, а на него кусок белого. © Неизвестно
==> читать все изречения...

2464 - | 2389 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.