Главная » Просмотр файлов » Г. Шилдт - С#4.0 Полное руководство

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 87

Файл №1160795 Г. Шилдт - С#4.0 Полное руководство (Г. Шилдт - С#4.0 Полное руководство) 87 страницаГ. Шилдт - С#4.0 Полное руководство (1160795) страница 872019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

При неудачном исходе операции чтения эти методы генерируют исключение 10Ехсергдоп. Кроме того, в классе В1пагунеабе г определен стандартный метод С1ояе () . где дори с обозначает поток, из которого вводятся считываемые данные. Для чтения из входного файла в качестве параметра 1прис может быть указан объект, создаваемый средствами класса Р11еБСгеааь Если же поток, определяемый параметром борис, не был открыт для чтения данных или оказался недоступным по иным причинам, то генерируется исключение АгоитепСЕхсерг1оп. По завершении ввода из потока типа Вдпагунеабег его нужно закрыть. При этом закрывается и базовый поток.

В классе Вдпагунеабег определены методы, предназначенные для чтения данных всех встроенных в СФ типов. Некоторые из этих методов перечислены в табл. 14.6. Следует, однако, иметь в виду, что в методе Веаббгг1пп () считывается символьная строка, хранящаяся во внутреннем формате с указанием ее длины. Все методы данного класса генерируют исключение 10Ехсергдоп, если возникает ошибка ввода. Кроме того, могут быть сгенерированы и другие исключения. Глава 14. Применение средств ввода-вывода 457 Описание Метод 1пг Веаг) () Возвращает целочисленное представление следующего доступного символа из вызывающего потока ввода. При обнаружении конца файла возвращает значение -1 упг Веаг((ьусе[] ьиггег, Делает попытку прочитать количество соипс байтов в дпб оггяес, 1пС соопс) МаССив ЬпЕ1ег, НачинаЯ с элемента ЬиЕГег[оГГяег], и возвращает количество успешно считанных байтов 1пс Веас((сьаг[]ьитГег, делает попытку прочитать количество соиле символов дпь оГиег, Впг согпг) вмассивьиГГег,начинаясэлементаьпгйег[отйяег], и возвращает количество успешно считанных символов Ае(ионстрирование двоичного ввода-вывода Ниже приведен пример программы, в котором демонстрируется применение классов Вш пагуйеабег и В1п ах унгдг ел для двоичного ввода-вывода.

В этой программе в файл записываются и считываются обратно данные самых разных типов. Записать двоичные данные, а затем считать их обратно. иятпд Яуягеш; оя1пд Буясеш.10; с1аяя Риоаса ясастс чоха Мати() ВтпагуХгтсег Оасаопс) Вупагувеабег Оаса1п; 1пс ' = 10; ОооЬ1е О = 1023.5В1 Ьоо1 Ь = Ггие; ясг1пч ясг = "Это тест"; Открыть файл длл вывода. ггу ( Оасаопс = пен Втпагухгьгег(лен г11езггеаш("геягоага", Р11емоое.сгеаге)); Сассь(10Ехсерстоп ехс) ( Сопяо1е.игхсе11пе("Ошибка открытия файла: 1п" + ехс.незвале) ГЕГНГП2 ) Записать данные в файл. ггу ( Сопяо1е.иг1сеьгпе("Запись " е 1); Оасаосл.иг1се(х) 1 Сопяо1е.игтсенспе("Запись " + Ф; ОасаОпс.нгтсе(О); Сопяо1е.игтсеьапе("Запись " + Ы; Оасаоис.игтсе(Ы; 488 Часть!.

Язык С№ сопяо1е.игтгеьтпе("запись " ь 12.2 * 7.4)г бакаопк.игтсе[12.2 * 7.4); Сопяо1е.игтсеЬ1пе("Запись " т ясг)т багаопг.игтсе(ясг)) ) сасск(10Ехсерс1оп ехс) ( сопяо1е.иг1геьтпе("Ошибка ввода-выводат1п" + ехс.меяяаче); ) 11па11у ( багаопс. С1ове () т ) Сопяо1е.иггсеХгпе()т !/ А теперь прочитать данные иэ файна. ггу ( бага1п = пен Вгпагукеабег (пен Г11еЕГгеаш (Усеясбаса", Р11еМобе .Ореп) ) т ) сассь(10Ехсерг1оп ехс) ( Сопяо1е.ыгтсе01пе("Ошибка открытия файна:1п" + ехс.неяяасе)т гегпгп; ) ггу ( г баса1п.кеаб1пс32()т Сопяо1е.игтге01пе("Чтение " + г)т б г)ака1п.кеабОоиЬ1е()т Сопяо1е.иггсеа№пе("Чтение " + б)г Ь = Оаса1п.аеас(Воо1еап()) Сопяо1е.игтсе01пе("Чтение " + Ь); б = г)аса1п.аеаг)ОопЬ1е()г Сопяо1е.ыггсепфпе("Чтение " + г))т якг = г)аса1п.кеабзсгтпЧ()т Сопяо1е.ыгтсеьтпе("Чтение " + ясг); ) сагсь(10ехсергтоп ехс) ( Сопяо1е.игтсеьтпе("Ошибка ввода-вывода:~п" + ехс.Меяяасе); ) 11па11у ( г)ака1п.С1ояе () т ) ) Вот к какому результату приводит выполнение этой программы.

Запись 10 Запись 1023.56 Запись Тгие Запись 90.28 Запись Зто тест Глава 14. Применение средств ввода-вывода 459 Чтение 10 Чтение 1023.56 Чтение тгце Чтение 90.28 Чтение Зто тест Если просмотреть содержимое файла Сеягбага, который получается при выполнении этой программы, то можно обнаружить, что он содержит данные в двоичной, а не в удобочитаемой текстовой форме. Далее следует более практический пример, демонстрирующий, насколько эффективным может быть двоичный ввод-вывод.

Для учета каждого предмета хранения на складе в приведенной ниже программе сначала запоминается наименование предмета, имеющееся в наличии, количество и стоимость, а затем пользователю предлагается ввести наименование предмета, чтобы найти его в базе данных. Если предмет найден, отображаются сведения о его запасах на складе. /* Использовать классы Вгпагувеабег и ВгпагуХггпег для реализации простой програмьы учета товарных запасов. */ ця1пч Вуягеаи ця1пч Вуясев.10; с1аяя 1пчепсогу ( ясаГ1с чо1б Магп() ( Вгпагунггсег басаоцс1 81пагуКеадег баса1п; ясгтпч гсеаи О наименование предмета ьпс опнапб; // имегыееся в наличии количество боцЬ1е сояс; // цена сгу ( басаоьа = пен Вгпагухгггег (пен Г11езггеаы ("1пнепсогу.бас", 811емобе .сгеаге) ) ) сагсп(10ехсерг1оп ехс) ( Сопяо1е.нгтсеьгпе("Не удается открыть файл "товарных запасов для вывода" )) Сопяо1е.иг1геьгпе("Причина: " + ехс.неяяасе); гегцгп; ) // Записать данные о товарных запасах в файл.

агу ( с)асаоца.нгьсе("Мелодики"); багаоцГ.Хггсе(10); багаоцг.хггге(3.95) 1 басаоцс.нгьсе("Отвертки" ) 1 басаоцс.иггсе(18); багаоцг .Иг1ге (1 . 50) 1 багаоцс.нгбсе("Плоскогубцы"); басаоцс.нггсе(5); 460 Часть (. Язык С() ба с або с . Хгфсе (4 .

95); басабос.кг1те("Пилы" ); басабос .Иггсе (8) ( басабпЬ.Иг1се(Б. 95); сассЬ(1ОЕхсерг1оп ехс) ( Сопяо1е.кггсеьяпе("Ошибка записи в файл товарных запасов"); Сопяо1е.иг1оеь1пе("Причина: " + ехс.меяяаде); ) 11па11у ( басабпЬ.С1ояе(); ) Сопяо1е.иггсеьфпе(); )) теперь открыть файл товарных запасов для чтения. Ьгу ( бага1п = пен В1пагуйеабег(пен Е11езсгеаш("1пчепсогу.бас", Г11еМобе.бреп)) ) сассЬ(1ОЕхсерсфоп ехс) Сопяо1е.нгбгеьфпе("Не удается открыть файл "товарных запасов для ввода"); Сопяо1е.иггсе11пе("Причина: " + ехс.меяяафе); гегогп; // Найти предмет, введенный пользователем.

Сопяо1е.Хгфге("Введите наименование длл поиска: ") яогфпЧ ньас = Сопяо1е.йеабьгпе()) Сопяо1е.нггсеьфпе()) Ьгу ( 1ог(;;) ( // Читать данные о предмете хранения. Есеш = бата1п.йеабзсг1ЬЧ(); опЬапб = баса1п.Реаб1пс32(); сояг = бага1п.йеаббооЬ1е(): // Проверить, совпадает ли он с запрашиваеьым предметом. // Если совпадает, то отобразить сведения о нем. 11(1сеш.ЕЧпа1я(ХЬас, Бсг1пЧСошраггяоп.бгбфпа119погеСаяе)) ( сопзо1е.хг1геьзпе(ггеш + ": " + опЬапб + " штук в наличии. "цена: (О:С) за штуку", сояс)) Сопяо1е.игзсе1гпе("Обшая стоимость по наиыенованию <(0)>: (1:С).' 1сеш, сояс * опЬапб); Ьгеакы ) ) ) сассЬ(Епб01БГгеашЕхсерс1оп) ( Сопяо1е.иг1теьфпе("Предмет не найден."); ) Г(ава 14. Применение средств ввода-вывода 461 сатсь (1ОЕхсергдоп ехс) ( Сопзо1е.нтьсевлпе (" Ошибка чтения из файла товарных запасов") Сопзо1е.нг11е11пе("Причина: " + ехс.иеззаде); 11па11у ( Оапа1п. 01оае (); ) ) Выполнение этой программы может привести, например, к следующему результату.

Введите наименование дпя поиска: Отвертки Отвертки: 18 штук в наличии. Цена. "51.80 за штуку. Обшая стоимость по наименованию <Отвертки>с 527.00. Обратите внимание на то, что сведения о товарных запасах сохраняются в этой программе в двоичном формате, а не в удобной для чтения текстовой форме. Благодаря этому обработка числовых данных моясет выполняться без предварительного их преобразования из текстовой формы.

Обратите также внимание на то, как в этой программе обнаруживается конец файла. Методы двоичного ввода генерируют исключение Епс(ОГЯСгеашЕхсерб1оп по достижении конца потока, и поэтому файл читается до тех пор, пока не будет найден искомый предмет или сгенерировано данное исключение. Таким образом, для обнаружения конца файла никакого специального механизма не требуется. файлы с произвольным доступом В предыдущих примерах использовались последовательные файлы, т.е. файлы со строго линейным доступом, байт за байтом.

Но доступ к содержимому файла может быть и произвольным. Для этого служит, в частности, метод Беек (), определенный в классе Е11еБС геаш. Этот метод позволяет установить указатель положения в файле, или так называемый ухюатель фаила, на любое место в файле. Ниже приведена общая форма метода Беек (): 1опд Беек(1опд огезее, Беехотгдгп ое1длп) где Обвес обозначает новое положение указателя файла в байтах относительно за- данного начала отсчета (отйдйп). В качестве отдд1 и может быть указано одно из при- веденных ниже значений, определяемых в перечислении ЯеекОг1д1п. Описание Значение Бееког1д1п.нед1п ЯееХОг1ддп.Опггепп БееХОгйдс О.Епс) Поиск от начала файла Поиск от текущего положения Поиск ог конца файла Следующая операция чтения или записи после вызова метода Яее)с () будет выполняться, начиная с нового положения в файле, возвращаемого этим методом. Если во время поиска в файле возникает ошибка, то генерируется исключение 10Ехсергдоп.

Если же запрос положения в файле не поддерживается базовым потоком, то генерируется исключение носЯпррогсес(Ехсерс1оп. Кроме того, могут быть сгенерированы и другие исключения. 462 Часть ). Язык С() В приведенном ниже примере программы демонстрируется ввод-вывод в файл с произвольным доступом.

Сначала в файл записываются прописные буквы английского алфавита, а затем его содержимое считывается обратно в произвольном порядке. // Продемонстрировать произвольный доступ к файлу. пя1пц Яуясет; пя1пс Яуяпеи.10! с1аяя йапдопйссеяяоеио ( ясап1с чогб Маги() ( Рг1еБГгеав г = пп11; спал сл; ггу ( Г = пен Р11езпгеаи("гапбоы.Пап", Р11еМобе.сгеасе)) // Записать английский алфавит в файл. гог(гпг г=с; г < 26; 1ьь) Е.игьсеВупо((Ьусо)('Л'ь1))у // А теперь считать отдельные буквы английского алфавита.

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

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

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

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