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

Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 80

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

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

Поэтому в некоторых программах состояние переполнения лучше проверять явным образом. ГЛАВА Применение средств ввода-вывода в примерах программ, приводившихся в предыдущих главах, уже применялись отдельные части системы ввода-вывода в С№, например метод со па о1е.

нг№сеЫпе Н, но делалось это без каких-либо формальных пояснений. Система ввода-вывода основана в С№ на иерархии классов, поэтому ее функции и особенности нельзя было представлять до тех пор, пока не были рассмотрены классы, наследование и исключения. А теперь пришел черед и для ввода-вывода. В языке С№ используется система ввода-вывода и классы, определенные в среде .НЕТ Егашев огх, и поэтому рассмотрение ввода-вывода в этом языке относится ко всей системе ввода-вывода среды .НЕТ в целом.

В этой главе речь пойдет о средствах консольного и файлового ввода-вывода. Следует, однако, сразу же предупредить, что система ввода-вывода в С№ довольно обширна. Поэтому в этой главе рассматриваются лишь самые важные и наиболее употребительные ее средства. Организация системы ввода- вывода в СФ на потоках Ввод-вывод в программах на С№ осуществляется посредством потоков. Поток — это некая абстракция производства или потребления информации. С физическим устройством поток связывает система ввода-вывода. Все потоки действуют одинаково — даже если они связаны с разными физическими устройствами. Поэтому классы и методы ввода-вывода могут применяться к самым разным типам устройств.

Например, методами вывода на консоль можно пользоваться и для вывода в файл на диске. Байтовые и символьные потоки На самом низком уровне ввод-вывод в С№ осуществляется байтами. И делается это потому, что многие устройства ориентированы на операции ввода-вывода отдельными байтами. Но человеку больше свойственно общаться символами. Напомним, что в С№ 418 Часть ), язык Сз тип с)тат является 16-разрядным, а тип Ьуге — 8-разрядным. Так, если в целях ввода- вывода используется набор символов в коде АБСП, то для преобразования типа спаг в тип Ьухе достаточно отбросить старший байт значения типа спаг. Но это не годится для набора символов в уникоде (11птсоде),' где символы требуется представлять двумя, а то и больше байтами. Следовательно, байтовые потоки не совсем подходят для организации ввода-вывода отдельными символами. С целью разрешить это затруднение в среде .НЕТ Ггашетчогк определено несколько классов, выполняющих превращение байтового потока в символьный с автоматическим преобразованием типа Ьуее в тип спаг и обратно.

Встроенные потоки Для всех программ, в которых используется пространство имен Яузсеаь доступны встроенные потоки, открывающиеся с помощью свойств Оопзо1е.1п, Сопзо1е.ОиС и Оопзо1е. Еггог. В частности, свойство Оопзо1е. Опт связано со стандартным потоком вывода. По умолчанию это поток вывода на консоль. Так, если вызывается метод Сопэо1е. Иг1СеЫпе О, информация автоматически передается свойству сопзо1е.

Оиг. Свойство Оопэо1е. гп связано со стандартным потоком ввода, который по умолчанию осуществляется с клавиатуры. А свойство Сопзо1е. Еггог связано со стандартным потоком сообщений об ошибках, которые по умолчанию также выводятся на консоль. Но эти потоки могут быть переадресованы на любое другое совместимое устройство ввода- вывода. Стандартные потоки являются символьными. Поэтому в зти потоки выводятся и из них вводятся символы. Классы потоков В среде .НЕТ Ггашетгог)т определены классы как для байтовых, так и для символьных потоков. Но на самом деле классы символьных потоков служат лишь оболочками для превращения заключенного в них байтового потока в символьный, автоматически выполняя любые требующиеся преобразования типов данных.

Следовательно, символьные потоки основываются на байтовых, хотя они и разделены логически. Основные классы потоков определены в пространстве имен Я уз Гем. 10. Для того чтобы воспользоваться этими классами, как правило, достаточно ввести приведенный ниже оператор в самом начале программы. изьод Яузсеп.гпт Пространство имен Яузгетс. 10 не указывается для консольного ввода-вывода потому, что для него определен класс Сопзо1е в пространстве имен яуэсегь КЛаСС ЗйгЕат Основным для потоков является класс Яузсеп. 10. Яггеаат.

Он представляет байтовый поток и является базовым для всех остальных классов потоков. Кроме того, он является абстрактным классом, а это означает, что получить экземпляр объекта класса Ясгеаат нельзя. В классе Яггеаат определяется ряд операций со стандартными потоками, представленных соответствующими методами. В табл. 14.1 перечислен ряд наиболее употребительных методов, определенных в классе яггеась Глава (4. Применение средств вводз-вывода 419 Таблица 14.1.

Некоторые методы, определенные в классе В с геат Описание иогс С1ояе () Ч01С Г1ияп() дпг яеасвуге() Закрывает поток Выводит содержимое потока на физическое устройство Возвращает целочисленное представление следующего байта, доступного для ввода нэ потока. Прн обнаружении конца файла возвращает значение -( Делает попытку ввести питвусея байтов в массив ьиг, начиная с элемента ьиг[оггяес). Возвращает количество успешно введенных байтов Ь Ь аеас(ьуге() Ьиу, 1пт оууяег, дпг питВугея) 1опс Зеек(1опс отсяек, Эеексггсгп оглади) Устанавливает текущее положение в потоке по указанному сме- щению оггяес относительно заданного начала отсчета оггд1п.

Возвращает новое положение в потоке Выводит один байт в поток вывода иодс Хгдиевуде(ЬУСе Ы чади Хг1пе (Ьуья [) Ьиу, 1пг сусле г, 1пд питзугея) Выводит подмножество и итлукяя байтов нз массива ьиг, на- чиная с элемента ьиг[ оггяес) . Возвращает количество выве- денных байтов Таблица 14.2. Свойства, определенные вклассе Вггеат Свойство Описание Ьоо1 Сапкеао Принимает значение схие, если иэ потока можно ввести данные. Доступно только для чтения Ьоо1 Сапзеек Принимает значение сгие, если поток поддерживает запрос текущего по- ложения в потоке.

Доступно только для чтения Ьоо1 Сапнг1ке Принимает значение сгие, если в поток можно вывести данные. Доступно только для чтения 1опд Ьепогп 1опс Роя111оп Содержит длину потока. Доступно только для чтения Представляет текущее положение в потоке. Доступно как для чтения, так н для записи 1пд Кеаот1теоиг Представляет продолжительность времени ожидания в операциях ввода.

Доступно как для чтения, так н для записи 1пк Хг1гет1теоик Представляет продолжительность времени ожидания в операциях вывода. Доступно как для чтения, так н для записи Ряд методов, перечисленных в табл. 14.1, генерирует исключение 1окхсерс1оп прн появлении ошибки ввода-вывода. Если же предпринимается попытка выполнить неверную операцию, например вывести данные в поток, предназначенный только для чтения, то генерируется исключение Нокэиррогкес(кхсеркдоп.

Кроме того, могут быть сгенернрованы н другие исключения — все зависит от конкретного метода. Следует заметить, что в классе Зкгеат определены методы для ввода (илн чтения) и вывода (или записи) данных. Но не все потоки поддерживают обе этн операции, поскольку поток можно открывать только для чтения илн только для записи. Кроме того, не все потоки поддерживают запрос текущего положения в потоке с помощью метода реек () . Для того чтобы определить возможности потока, придется воспользоваться одним, а то н несколькими свойствами класса зсгеат. Эти свойства перечислены в табл. 14.2 наряду со свойствами Вепеоьп и Роя1С1оп, содержащими длину потока н текущее положение в нем.

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

Кроме того, можно создать свои собственные производные классы потоков, хотя для подавляющего числа приложений достаточно и встроенных потоков. Классы-оболочки символьных потоков Таблица 14.3. Методы ввода, определенные в классе тежсвеас)ек Описание ьпС РееК() Получает следующий символ нз потока ввода, но не удаляет его. Возвращает значение -1, если нн один нз символов не доступен гпс веаг(() Возвращает целочисленное представление следующего доступ- ного символа нз вызывающего потока ввода.

Прн обнаружении конца потока возвращает значение -1 Делает попытку ввести количество пипслагя символов в массив ьие, начиная с элемента ьие(сееяес), н возвращает количе- ство успешно введенных символов Делает попытку ввести количество пипспагя символов в массив ьие, начиная с элемента ьие( сееяес), н возвращает количе- ство успешно введенных символов Вводит следующую текстовую строку н возвращает ее в виде объекта типа ясгзпв Прн попытке прочитать признак конца файла возвращает пустое значение Вводит все символы, оставшиеся в потоке, н возвращает нх в виде объекта типа ясг1пд гпг яеаг)(спас() Ьиг, Епи сЕЕяег, гпг пияСЛагя] ъпС Пеаив1сск(снах[! ЬиЕ, Епи сЕЕяег, ъпС пияСЛагя) ясг1пи яеаЖгпе() ягг1пд яеаг)тсвпг(() Для создания символьного потока достаточно заключить байтовый поток в одном из классов-оболочек символьных потоков.

На вершине иерархии классов символьных потоков находятся абстрактные классы Техгцеаоег и Техгнгъгег. Так, класс Техгцеаг)ег организует ввод, а класс Техгигъиег — вывод. Методы, определенные в обоих этих классах, доступны для всех их подклассов. Они образуют минимальный набор функций ввода-вывода, которыми должны обладать все символьные потоки. В табл. 14.3 перечислены методы ввода, определенные в классе техсцеас)ег.

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

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

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

Г. Шилдт - С# 3.0 Полное руководство
C_sharp_3TCR_code
Apndx.lst
Chap2.lst
Chap3.lst
Chap4.lst
Chap5.lst
Chap6.lst
Chap7.lst
Chap8.lst
Chap9.lst
Chap10.lst
Chap11.lst
Chap12.lst
Chap13.lst
Chap14.lst
Chap15.lst
Chap16.lst
Chap17.lst
Chap18.lst
Chap19.lst
Chap20.lst
Chap21.lst
Chap22.lst
Chap23.lst
Chap24.lst
Chap25.lst
Chap26.lst
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6461
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее