Добавил:
2200 7008 9480 6099 TKFF БЛАГОДАРНОСТЬ МОЖНО ТУТ ОСТАВИТЬ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ 2025 / 4 курса_МТУСИ / 1 КУРС / Информатика / С# для чайников - Мюллер.pdf
Скачиваний:
0
Добавлен:
04.06.2025
Размер:
53.3 Mб
Скачать

Затем метод GetFileList ( ) создает объект Directoryinfo. Как и гласит его имя, объект Directoryinfo содержит тот же вид информации о каталоге, что и объект Fileinfo о файле. Однако у объекта Directoryinfo есть доступ к одной вещи, к которой нет доступа у объекта Fileinfo, - к списку файлов каталога в виде массива Fileinfo.

Как обычно, метод GetFileList ( ) помещает код, работающий с файлами и каталогами, в большой trу-блок. (Объяснение, что такое ключевые слова try и catch, дается в главе 9, "Эти исключительные исключения".) Конструкция catch в конце метода перехватывает все генерируемые ошибки и выводит имя ката­ лога (которое, вероятно, введено неверно, т.е. такого каталога не существует).

Последний шаг состоит в возврате files, который содержит спи­ сок файлов. Будьте внимательны при возврате ссылок. Например, не возвращайте ссылки ни на одну из внутренних очередей в клас­

дпглтргеВ се PriorityQueue в главе 8, "Обобщенность", если не хотите наме­ ренно пригласить пользователей мешать нормальной работе класса (путем работы не через методы класса, а напрямую с очередями). Но GetFileList ( ) не дает вам доступа к внутренностям одного из ваших классов, так что в данном случае все в порядке.

Форматирование вывода

С собранным списком файлов вы можете делать все что хотите. Приведен­ ный пример отображает содержимое каждого файла в шестнадцатеричном формате, который может быть полезным в некоторых ситуациях. Перед тем как вы сможете создать строку вывода в шестнадцатеричном формате, вам нужно создать отдельные выходные строки. Метод DumpHex () , представленный здесь, может показаться вам сложным из-за трудностей правильного форматирования вывода.

ГЛАВА 7 Работа с коллекциями 175

176 ЧАСТЬ 1 Основы программирования на С#

Метод DumpHex ( ) начинает работу с открытия файла. Объект Fileinfo со­ держит информацию о файле, но не открывает его. Метод DumpHex ( ) получает полное имя файла, включая путь. Затем он открывает Fi leStream в режиме только для чтения с использованием этого имени. Блок catch перехватывает исключение, если FileStream не в состоянии прочесть файл по той или иной причине.

Затем DumpHex ( ) считывает файл по 10 байт за раз и выводит их в одну строку в шестнадцатеричном формате. После вывода каждых 20 строк про­ грамма приостанавливает работу в ожидании нажатия пользователем клавиши <Enter>. При реализации этой функциональности я воспользовался операто­ ром получения остатка от деления % .

По вертикали консольное окно по умолчанию имеет 25 строк (прав­ да, пользователь может изменить эту настройку, добавив или убрав

строки). Это означает, что вы должны делать паузу после вывода СОВЕТ каждых 20 строк или около тоrо. В противном случае данные будут

быстро выведены на экран, и пользователь не сможет их прочесть.

Операция деления по модулю ( % ) возвращает остаток после деления, т.е. выражение ( line% 2 0 ) ==О истинно при значениях line, равных 20, 40, 60, 80 . . . Словом, идея понятна. Это важный метод, применимый для всех видов циклов, когда нужно выполнять некоторую операцию только с определенной частотой.

Вывод в шестнадцатеричном формате

Метод DumpBuffer ( ) выводит каждый член массива байтов с использовани­ ем управляющего элемента форматирования аит,аим,хотя и звучит как название какого-то секретного военного эксперимента, означает всего лишь "вывести число в виде двух шестнадцатеричных цифр".

цц

( гтго

--,х­

 

 

 

 

 

 

 

цц

:)

 

:)ш

р:, "

тго

-.,х т'

,

l Л '

-.,хй

т

 

 

 

 

 

 

 

:им

им го

,

т

-рхн :им Lим,,

.

a:им,,

( й

 

,

=Vмп,,

aaт

 

2 '

,

. '

--,х l : им,,

ЕН

 

 

 

 

сримрr, Geх:

,т у i , , иf tе р о

 

 

 

срим

рr,йeх:

,г:им, т тV

 

 

 

 

 

ГЛАВА 7 ИрaотрийигоччВг Е вея ви o­­и

Соседние файлы в папке Информатика