Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C#

Г. Шилдт - Полный справочник по C# (1160789), страница 70

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

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

Приведем, например, только некоторые их перегруженные версии.МетодОписаниеvoid Write(int val)Записывает значение типа i n tvoid Write(double val)Записывает значение типа doublevoid Write(bool val)Записывает значение типа b o o lvoid WriteLine(string val)Записывает значение типа s t r i n g с последующим символом новой строкиvoid WriteLine(uint val)Записывает значение типа u i n t с последующим символом новой строкиvoid WriteLine(char val)Записывает символ с последующим символом новой строкиПомимо методов Write () и WriteLine (), в классе TextWriter также определеныметоды Close () и Flush ():v i r t u a l void Close()v i r t u a l void Flush()Метод Flush () записывает все данные, оставшиеся в выходном буфере, на физический носитель информации.

Метод Close () закрывает поток.Из классов TextReader и TextWriter выведен ряд символьно-ориентированныхпотоковых классов, в том числе и те, что перечислены в следующей таблице. Следовательно, эти потоковые классы используют методы и свойства, определенные в классахTextReader и TextWriter.Потоковый классОписаниеstreamReaderПредназначен для чтения символов из байтового потока. Этот класс является оболочкой длябайтового входного потокаstreamwriterПредназначен для записи символов в байтовый поток. Этот класс является оболочкой длябайтового выходного потокаstringReaderПредназначен для чтения символов из строкиstringwriterПредназначен для записи символов в строкуГлава 14.

Использование средств ввода-вывода379Двоичные потокиПомимо байтовых и символьных потоков, в С# определены два двоичных потоковых класса, которые можно использовать для прямого считывания и записи двоичныхданных. Эти классы, которые называются BinaryReader и BinaryWriter, будут рассмотрены ниже в этой главе в теме двоичного файлового ввода-вывода.Теперь, когда вы получили общее представление о С#-системе ввода-вывода, можно переходить к детальному изучению этой темы, которую, пожалуй, стоит начать сконсольного ввода-вывода.Консольный ввод-вывод данныхКонсольный ввод-вывод данных реализуется посредством стандартных потоковConsole. In, Console.Out и C o n s o l e .

E r r o r . Консольные классы ввода-вывода использовались, начиная с главы 2, поэтому вы уже с ними знакомы. Как вы убедитесьниже, они обладают и другими возможностями.Прежде всего, важно отметить, что большинство реальных С#-приложений являются не текстовыми, или консольными, а графическими программами или компонентами, которые опираются на оконный интерфейс, предназначенный для взаимодействия с пользователем. Таким образом, часть С#-системы ввода-вывода, которая связанас консольным вводом-выводом данных, не относится к широко используемым средствам. Несмотря на то что текстовые программы — прекрасные учебные примеры коротких утилит и некоторых типов компонентов, они не годятся для большинства реальных приложений.Считывание данных из консольного входного потокаПоток Console. In — экземпляр класса TextReader, поэтому для доступа к немуможно использовать методы и свойства, определенные в классе TextReader.

Однакообычно используют методы, определенные в классе Console, которые автоматическисчитывают значение свойства Console. In. В классе Console определено два методаввода информации: Read () и ReadLme ().Метод Read () используется для считывания одного символа.s t a t i c i n t Read()Метод Read () возвращает следующий символ, считанный с консоли. Он ожидает,пока пользователь не нажмет какую-нибудь клавишу, а затем возвращает результат.Считанный символ возвращается как значение типа i n t , которое должно быть приведено к типу char.

При возникновении ошибки метод ReadO возвращает —1, а в случае неудачного исхода операции генерирует исключение типа lOException. По умолчанию консольный ввод данных буферизован (с ориентацией на строки), поэтому,прежде чем введенный с клавиатуры символ будет послан программе, необходимо нажать клавишу <Enter>.Рассмотрим пример программы, которая считывает символ с клавиатуры с помощью метода Read ().// Считывание символа с клавиатуры.using System;class Kbln {public static void Main() {char ch;380Часть I.

Язык С#Console.Write{"Нажмите любую клавишу, а затем — <ENTER>: " ) ;ch = (char) Console.Read(); // Считывание// char-значения.Console.WriteLine("Вынажали клавишу: " + c h ) ;Вот как могут выглядеть результаты выполнения этой программы:Нажмите любую клавишу, а затем — <ENTER>: юВы нажали клавишу: юТот факт, что метод Read () буферизирует строки, является порой источником досадных недоразумений. При нажатии клавиши <Enter> во входной поток вводитсяпоследовательность, состоящая из символов возврата каретки и перевода строки. Более того, эти символы остаются во входном потоке до тех пор, пока вы их не прочитаете.

Таким образом, в некоторых приложениях перед выполнением следующей операции ввода их нужно удалить (просто считыванием из потока).Чтобы прочитать строку символов, используйте метод ReadLine ().static string ReadLine()Метод ReadLine () считывает символы до тех пор, пока не будет нажата клавиша<Enter>, и возвращает объект типа s t r i n g . При неудачном завершении метод генерирует исключение типа IOException.Рассмотрим программу, которая демонстрирует считывание строки из потокаConsole. In с помощью метода ReadLine ().// Ввод данных с консоли с помощью метода ReadLine().(using System;c l a s s ReadString {p u b l i c s t a t i c void Main() {string str;Console.WriteLine("Введите несколько символов.");s t r = Console.ReadLine();Console.WriteLine("Вы ввели: " + s t r ) ;Вот такие результаты можно получить при выполнении этой программы.I Введите несколько символов.I Это всего лишь тест.I Вы ввели: Это всего лишь тест.Несмотря на то что методы класса Console являются самым простым способомсчитывания данных из потока Console.

In, можно с таким же успехом вызывать методы базового класса TextReader. Например, перепишем предыдущую программу сиспользованием методов, определенных в классе TextReader.// Считывание строки с клавиатуры благодаря// непосредственному использованию свойства Console.In.using System;class ReadChars2 {public s t a t i c void Main() {string s t r ;Глава 14. Использование средств ввода-вывода381Console.WriteLine("Введите несколько символов.")/s t r = Console.In.ReadLine();Console. WriteLine ("Вы ввели: " + str 4 );Обратите внимание на то, что метод ReadLine () теперь напрямую вызывается дляпотока Console.

In. Здесь важно то, что при необходимости доступа к методам, определенным в классе TextReader, который является базовым для объекта Console. In,их можно вызывать так, как показано в этом примере.Запись данных в консольный входный потокПотоки Console.Out и C o n s o l e . E r r o r —• объекты типа TextWriter. Прощевсего консольный вывод данных выполнить с помощью методов Write О иWriteLineO, с которыми вы уже знакомы. Для каждого из встроенных типов предусмотрены отдельные версии этих методов.

В классе Console определены собственныеверсии методов Write () и WriteLine ( ) , поэтому их можно вызывать непосредственно для класса Console, как мы и делали это в примерах этой книги. Однако при желании можно вызывать эти (и другие) методы класса TextWriter, который являетсябазовым для объектов Console.Out и C o n s o l e . E r r o r .Рассмотрим программу, которая демонстрирует запись данных в потокиConsole.Out и C o n s o l e .

E r r o r .// запись данных в потоки Console.Out и C o n s o l e . E r r o r .using System;class ErrOut {public s t a t i c void Main() {int a=10, b=0;int r e s u l t ;Console.Out.WriteLine("Деление на нуль сгенерирует исключение.");try {r e s u l t = а / b; // Генерируем исключение.} catch(DivideByZeroException exc) {Console.Error.WriteLine(exc.Message);При выполнении этой программы получим следующие результаты:Деление на нуль сгенерирует исключение.Attempted to divide by zero.Иногда неопытные программисты путаются, не зная точно, когда следует использовать поток C o n s o l e . E r r o r . Если и Console.Out, и C o n s o l e .

E r r o r по умолчаниювыводят данные на консоль, то почему существует два различных потока? Ответпрост: стандартные потоки можно перенаправить на другие устройства. Например,поток C o n s o l e . E r r o r можно перенаправить для записи данных в дисковый файл, ане на экран. Следовательно, и поток ошибок можно перенаправить, например, в системный журнал (log file), не затрагивая при этом консольный вывод. И наоборот, есликонсольный вывод данных перенаправить в файл, а вывод ошибок — нет, то сообще-382Часть I.

Язык С#ния об ошибках будут появляться на консольном устройстве, и их легко увидеть. Ноподробнее о перенаправлении потоков мы поговорим ниже, когда рассмотрим файловый ввод-вывод.Класс F i l e s t r e a m и файловый ввод-выводна побайтовой основеВ С# предусмотрены классы, которые позволяют считывать содержимое файлов изаписывать в них информацию. Конечно же, дисковые файлы — самый распространенный тип файлов. На уровне операционной системы все файлы обрабатываются напобайтовой основе. Нетрудно предположить, что в С# определены методы, предназначенные для считывания байтов из файла и записи байтов в файл.

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

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

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

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