Главная » Просмотр файлов » 1629295403-b876e2087bddebea4bc9666fb2377a02

1629295403-b876e2087bddebea4bc9666fb2377a02 (846199), страница 88

Файл №846199 1629295403-b876e2087bddebea4bc9666fb2377a02 (С для чайников) 88 страница1629295403-b876e2087bddebea4bc9666fb2377a02 (846199) страница 882021-08-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 88)

//Работас коллекциями// номером строкиConsole.Write("{0:D3} - ", n L i n e ) ;DumpBuffer(buffer, numBytes),// После каждых 2 0 строк останавливаемся, так как// прокрутка консольного окна отсутствуетif ((nLine % 20) == 0){Console.WriteLine("Нажмите <Enter> для вывода " +"очередных 20 с т р о к " ) ;Console.ReadLine();}}// DumpBuffer - вывод буфера символов в виде единой// строки в шестнадцатеричном форматеpublic static void DumpBuffer(byte[] buffer,int numBytes)for(int index = 0;index < numBytes;index++)byte b = buffer[index] ,•Console.Write("{0:X2}, ", b) ,Console.WriteLine();}}}В командной строке пользователь указывает каталог, применяемый в качестве aprylмента программы. Приведенная далее команда выведет шестнадцатеричный дамп каждо- [го файла из временного каталога (как текстовых, так и бинарных файлов):loopthroughfilesc:\randy\tempЕсли не ввести имя файла, программа по умолчанию использует текущий каталог.!(Шестнадцатеричный дамп выводит все числа в шестнадцатеричной системе счисле-jния — см.

врезку "Шестнадцатеричные числа".)Шестнадцатеричные числаКак и бинарные числа (0 и 1), шестнадцатеричные числа также очень важны в компью­терном программировании. В шестнадцатеричной системе счисления цифрами явля­ются обычные десятичные цифры 0-9 и буквы А, В, С, D, Е, F — где А = 10, В = 11,F = 15. Для иллюстрации (префикс Ох указывает на шестнадцатеричность выводи­мого числа): OxD = 13. 0x10 = 16: 1*16 + 0 * 1 . 0х2А = 42: 2*16 + А*1 (здесь А*1 =10*1). Буквы могут быть как строчными, так и прописными: F означает то же, что ит.Эти числа выглядят причудливо, но они очень полезны, в особенности при отладкеили работе с аппаратной частью или содержимым памяти.Демонстрационные программы FileRead и FileWrite считывали именафайлов с консоли, в то время как в этой программе имя файла передается в ко­мандной строке.

Поверьте, вас никто не пытается запутать, а всего лишь пред­лагаются различные варианты решения одной и той же задачи.448Часть VII. Дополнительные главыПервая строкаличие аргумента ввен 0), программазапущена из Visualваться подкаталогдемонстрационной программы LoopThroughFiles определяет на­командной строке. Если список аргументов пуст (args.

Length ра­вызывает Directory. GetCurrentDirectory ( ) . Если программаStudio, а не из командной строки, то по умолчанию будет использо­bin\Debug в каталоге проекта LoopThroughFiles.Класс Directory предоставляет пользователю набор методов для работыс каталогами, а класс Filelnf о— методы для перемещения, копированияи удаления файлов.Затем программа получает список всех файлов в указанном каталоге посредством вы­зова GetFileList ( ) . Эта функция возвращает массив объектов Filelnf о.

Каждыйобъект Filelnf о содержит информацию о ф а й л е — например, имя файла (как полноеимя с путем, FullName, так и без пути — Name), дату его создания и время последнегоизменения. Функция Main () проходит по всему списку файлов с помощью циклаforeach.

Она выводит имя каждого файла и передает его функции DumpHex () для вы­вода содержимого на консоль.Пауза в конце каждого цикла позволяет программисту просмотреть выведеннуюDumpHex () информацию.Функция GetFileList () начинает работу с создания пустого списка Filelnf о,который будет возвращен в случае ошибки.Этот прием стоит запомнить и использовать при работе с функциями Get...List ():если происходит ошибка, вывести сообщение о ней и вернуть пустой список.Будьте внимательны при возврате ссылок. Например, не возвращайте ссылкини на одну из внутренних очередей в классе PriorityQueue в главе 15,"Обобщенное программирование", если не хотите намеренно пригласить поль­зователей мешать нормальной работе класса (работой не посредством методовкласса, а напрямую с очередями). Но GetFileList (} не дает вам доступак внутренностям одного из ваших классов, так что в данном случае все в порядке.Затем функция GetFileList () создает объект Directorylnf о.

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

Объект Filelnf о содер­жит информацию о файле, но не открывает его. Функция DumpHex () получает полноеимя файла, включая путь. Затем она открывает FileStream в режиме только для чте­ния с использованием этого имени. Блок catch перехватывает исключение, еслиFileStream не в состоянии прочесть файл по той или иной причине.Затем DumpHex () считывает файл по 10 байт за раз и выводит их в одну строку вшестнадцатеричном формате. После вывода каждых 20 строк программа приостанавли­вает работу в ожидании нажатия пользователем клавиши <Enter>.Глава 20. Работа с коллекциями449По вертикали консольное окно по умолчанию имеет 25 строк (правда, пользо­ватель может изменить эту настройку, добавив или убрав строки).

Это означа­ет, что вы должны делать паузу после вывода каждых 20 строк или около того,В противном случае данные будут быстро выведены на экран и пользователь несможет их прочесть.Операция деления по модулю (%) возвращает остаток после деления. То есть выраже­ние (nLine%20) = = 0 истинно при значениях nLine, равных 20, 40, 60, 80.... Словом,идея понятна. Это важный метод, применимый для всех видов циклов, когда нужно вы­полнять некоторую операцию только с определенной частотой.Функция DumpBuf fer () выводит каждый член массива байтов с использованиемуправляющего элемента форматирования Х2. Х2 хотя и звучит как название какого-тосекретного военного эксперимента, означает всего лишь "вывести число в виде двух шестнадцатеричных цифр" (см. главу 9, "Работа со строками в С # " ) .Диапазон значений byte — от 0 до 255, или O x F F — т.е.

двух шестнадцатеричныхцифр для вывода одного байта достаточно.Вот как выглядят первые 20 строк при выводе содержимого файла output.txt.Даже его собственная мать не узнала бы его в таком виде...Дамп файла С:\C#ProgramsVi\holdtank\Test2\bin\output.txt:001 - 53, 74, 72, 65, 61, 6D, 20, 28, 70, 72,002 - 6F, 74, 65, 63, 74, 65, 64, 29, 0D, OA,003 - 20, 20, 46, 69, 6C, 65, 53, 74, 72, 65,004 - 61, 6D, 28, 73, 74, 72, 69, 6E, 67, 2C,005 - 20, 46, 69, 6C, 65, 4D, 6F, 64, 65, 2C,006 - 20, 46, 69, 6C, 65, 41, 63, 63, 65, 73,007 - 73, 29, OD, OA, 20, 20, 4D, 65, 6D, 6F,008 - 72, 79, 53, 74, 72, 65, 61, 6D, 28, 29,009 - 3B, OD, OA, 20, 20, 4E, 65, 74, 77, 6F,010 - 72, 6B, 53, 74, 72, 65, 61, 6D, OD, OA,011 - 20, 20, 42, 75, 66, 66, 65, 72, 53, 74,012 - 72, 65, 61, 6D, 20, 2D, 20, 62, 75, 66,013 - 66, 65, 72, 73, 20, 61, 6E, 20, 65, 78,014 - 69, 73, 74, 69, 6E, 67, 20, 73, 74, 72,015 - 65, 61, 6D, 20, 6F, 62, 6A, 65, 63, 74,016 - OD, OA, OD, OA, 42, 69, 6E, 61, 72, 79,017 - 52, 65, 61, 64, 65, 72, 20, 2D, 20, 72,018 - 65, 61, 64, 20, 69, 6E, 20, 76, 61, 72,019 - 69, 6F, 75, 73, 20, 74, 79, 70, 65, 73,020 - 20, 28, 43, 68, 61, 72, 2C, 20, 49, 6E,Нажмите <Enter> для вывода очередных 2 0 строкМожно восстановить файл в виде строк из вывода в шестнадцатеричном фор­мате.

0x61 — числовой эквивалент символа а. Буквы, расположены в алфавит­ном порядке, так что 0x65 должно быть символом е. 0x20 — пробел. Приве­денная здесь первая строка выглядит при обычной записи в виде строк как" S t r e a m ( р г " . Интригующе, не правда ли? Полностью коды букв вы можетенайти в разделе "ASCII, table of codes" справочной системы.Эти коды корректны и при использовании набора символов Unicode, который приме­няется С# по умолчанию (побольше о Unicode вы можете узнать, прогулявшись в Интер­нете в поисках "Unicode characters").450Часть VII.

Дополнительные главыВот как выглядит вывод программы, если указать неверное имя каталога х:Каталог "х" неверенCould not find a part of the path"C:\C#Programs\LoopThroughFiles\bin\Debug\x".Больше файлов нетНажмите <Enter> для завершения программы...Не впечатляет?...Написание собственного классаколлекции: связанный списокЯ из тех учителей, которые по старинке считают, что сначала следует освоить табли­цу умножения, а уж потом давать ученику калькулятор. Так что сейчас вы пройдетесквозь дебри создания собственной коллекции, перед тем как познакомиться со встроен­ными коллекциями, о которых упоминалось в главе 15, "Обобщенное программирова­ние".

Здесь будут рассмотрены все "болты и гайки", из которых состоит класс коллек­ции, и как все они объединяются в одно целое.Одним из наиболее распространенных видов контейнеров после массива являетсясвязанный список, каждый объект которого указывает на предыдущий и последующийэлементы списка, т.е. объекты, составляющие список, оказываются соединены в цепочку.Вы используете ссылки на объекты для объединения отдельных узлов в цепь. В каждом та­ком узле содержатся дополнительные данные, указывающие на следующий узел в цепи.Отдельная переменная, обычно называющаяся ссылкой на голову списка, указывает напервый объект в списке, в то время как хвост списка указывает на его последний элемент.Односвязные списки содержат узлы, связанные только с узлами, следующимиза ними.

По такому списку можно пройти только в одном направлении, следуясвязям между узлами. Дважды связанный список содержит узлы, которые ука­зывают как на последующий, так и на предыдущий узлы. По таким спискамможно проходить в обоих направлениях.Связанный список по сравнению с массивом обладает рядом преимуществ и недос­татков.Можно легко вставить элемент в средину списка. Для выполнения вставки про­грамма должна изменить только значения четырех ссылок (в дважды связанномсписке), но это простые, быстро вносимые изменения.Точно так же можно легко удалить элемент из связанного списка.Связанный список при необходимости может расти или уменьшаться. Программаначинает работу с пустым связанным списком, а затем по мере необходимости до­бавляет и удаляет элементы.Доступ к элементу, располагающемуся следующим, быстр и прост, однако эле­менты связанного списка не индексированы.

Таким образом, обращение к опреде­ленному элементу списка может потребовать проход по всему списку, что весьманеэффективно.Глава 20. Работа с коллекциями451Связанные списки идеально подходят для хранения последовательностей данных,особенно если программа не знает заранее их точное количество (тем не менее следуетсерьезно подумать о возможном применении обобщенного класса List<T>, которыйбыл описан в главе 15, "Обобщенное программирование". Если вам нужен именно свя­занный список, можно воспользоваться встроенным связанным списком из С# 2.0, а нетем, который разрабатывается в данном разделе.

Характеристики

Тип файла
PDF-файл
Размер
14,75 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6376
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее