Программирование >>  Обработка исключительных ситуаций 

1 ... 83 84 85 [ 86 ] 87 88 89 ... 142


BinaryWriter tout = new BinaryWriter(

new FileStreamC @ D:\C#\binary , FileMode.Create)

double d = 0; while ( d < 4 )

fout.WriteC d ); d += 0.33;

fout.Seek( 16. SeekOrigin.Begin ); второй элемент файла fout.Write( 8888d );

fout.CloseC);

catchC Exception e )

Console.WriteLineC Error: return:

+ e.Message );

При создании двоичного потока в него передается объект базового потока. При установке указателя текущей позиции в файле учитывается длина кажждого значения типа doubl е - 8 байт.

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

При чтении принимается во внимание тот факт, что метод ReadDoubl е при обнаружении конца файла генерирует исключение EndOfStreamException. Поскольку в данном случае это не ошибка, тело обработчика исключений пустое.

Листинг 11.8. Считывание двоичного файла

using System;

using System.10;

namespace ConsoleAppl icationi

{ class Classl

{ static void MainO



FileStream f =

new FileStreamC @ D:\C#\binary , Fi1eMode.Open ); BinaryReader fin = new BinaryReaderC f );

long n = f.Length / 8; doublet] х = new double[n]:

long i = 0:

whileC true ) x[i+ + ] =

количество чисел в файле

fin.ReadDoubleO; чтение

catch ( EndOfStreamException e ) {}

foreachC double d in x ) Console.WriteC + d ); вывод fin.CloseO;

f.CloseO;

catch ( FileNotFoundException e ) Console.WriteLineC e.Message );

Console.WriteLineC Проверьте правильность имени файла! ); return;

catch ( Exception e )

Console.WriteLineC Error: return;

+ e.Message );

Результат работы программы:

0 0,33 8888 0,99 1.32 1,65 1,98 2,31 2,64 2,97 3,3 3,63 3,96

Консольный ввод-вывод

Консольные приложения имеют весьма ограниченную область применения, самой распространенной из которых является обучение языку программирования. Для организации ввода и вывода используется известный вам класс Console, определенный в пространстве имен System. В этом классе определены три стандартных



потока: входной поток Console. In класса TextReader и выходные потоки Consol е. Out и Console.Error класса TextWriter.

По умолчанию входной поток связан с клавиатурой, а выходные - с экраном, однако можно перенаправить эти потоки на другие устройства с помощью методов Set In и SetOut или средствами операционной системы (перенаправление с помощью операций <, > и ) .

При обмене с консолью можно применять методы указанных потоков, но чаще используются методы класса Console - Read, ReadLine, Write и WriteLine, которые просто передают управление методам нижележащих классов In, Out и Error.

Использование не одного, а двух выходных потоков полезно при желании разделить нормальный вывод программы и её сообщения об ошибках. Например, нормальный вывод программы можно перенаправить в файл, а сообщения об ошибках - на консоль или в файл журнала.

Работа с каталогами и файлами

В пространстве имен System. 10 есть четыре класса, предназначенные для работы с физическими файлами и структурой каталогов на диске: Directory, File, Directorylnfo и Filelnfo. С их помощью можно выполнять создание, удаление, перемещение файлов и каталогов, а также получение их свойств.

Классы Directory и File реализуют свои функции через статические методы. Directorylnfo и Filelnfo обладают схожими возможностями, но они реализуются путем создания объектов соответствующих классов. Классы Directorylnfo и Filelnfo происходят от абстрактного класса FileSystemlnfo, который снабжает их базовыми свойствами, описанными в табл. 11.10.

Таблица 11.10. Свойства класса FileSystemlnfo Свойство Описание

Attributes Получить или установить атрибуты для данного объекта файловой

системы. Для этого свойства используются значения перечисления

FileAttributes

CreationTime Получить или установить время создания объекта файловой системы Exists Определить, существует ли данный объект файловой системы

Extension Получить расширение файла

Full Name Возвратить имя файла или каталога с указанием полного пути

LastAccessTime Получить или установить время последнего обращения к объекту файловой системы

LastWriteTime Получить или установить время последнего внесения изменений в объект файловой системы

Name Возвратить имя файла. Это свойство доступно только для чтения.

Для каталогов возвращает имя последнего каталога в иерархии, если это возможно. Если нет, возвращает полностью определенное имя



1 ... 83 84 85 [ 86 ] 87 88 89 ... 142

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика