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

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

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

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

In, можно перенаправлять. Безусловно, чаще всего они перенаправляются в какой-нибудь файл. Приперенаправлении стандартного потока входные и/или выходные данные автоматически направляются в новый поток. При этом устройства, действующие по умолчанию,игнорируются. Благодаря перенаправлению стандартных потоков программа можетсчитывать команды из дискового файла, создавать системные журналы или даже считывать входные данные с сетевых устройств.Перенаправить стандартный поток можно двумя способами.

Во-первых, при выполнении программы из командной строки можно использовать операторы " < " и " > " ,чтобы перенаправить потоки Console. In и/или Console.Out, соответственно. Рассмотрим, например, следующую программу:u s i n g System;class Test {public static void Main() {Console.WriteLine("Это тест.");392Часть I. Язык С#При выполнении ее с помощью командной строкиTest > logтекстовая строка "Это тест." будет записана в файл log.

Входной поток можно перенаправить аналогичным способом. При перенаправлении входного потока важно позаботиться о том, чтобы задаваемый источник входных данных содержал информацию, удовлетворяющую требованиям программы. В противном случае программа зависнет.Операторы перенаправления " < " и " > " являются частью не языка С#, а операционной системы. Таким образом, если среда поддерживает функцию перенаправленияпотоков ввода-вывода (как это реализовано в Windows), вы сможете перенаправитьстандартные входные и выходные потоки, не внося изменений в программы. Однакосуществует и второй способ, который позволяет перенаправлять стандартные потокиименно программно.

Для этого понадобятся следующие методы S e t l n ( ) , SetOut () иS e t E r r o r (), которые являются членами класса Console:static void Setln(TextReader input)static void SetOut(TextWriter output)static void SetError(TextWriter output)Таким образом, чтобы перенаправить входной поток, вызовите метод S e t i n O ,указав в качестве параметра желаемый поток. Вы можете использовать любой входнойпоток, если он является производным от класса TextReader. Чтобы перенаправитьвыходной поток в файл, задайте Filestream-объект, помещенный в оболочкуStreamWriter-объекта. Пример перенаправления потоков проиллюстрирован следующей программой:// Перенаправление потока Console.Out.using System;using System.10;class Redirect {public s t a t i c void Main() {StreamWriter log_out;Jtry {log_out = new StreamWriter("logfile.txt");}catch(IOException exc) {Console.WriteLine(exc.Message +"He удается открыть файл.");return ;// Направляем стандартный выходной поток в// системный журнал.Console.SetOut(log_out);Console.WriteLine("Это начало системного журнала.");for(int i=0; i<10; i++) Console.WriteLine(i);Console.WriteLine("Это конец системного журнала.");log_out.Close() ;Глава 14.

Использование средств ввода-вывода393При выполнении этой программы на экране не появится ни одного символа, нофайл logf i l e . t x t будет иметь такое содержимое:Это начало системного журнала.О12345б789Это конец системного журнала.При желании вы можете поэкспериментировать, перенаправляя другие встроенныепотоки ввода-вывода.Считывание и запись двоичных данныхДо сих пор мы считывали и записывали байты или символы, но эти операции ввода-вывода можно выполнять и с другими типами данных. Например, вы могли бысоздать файл, содержащий i n t - , double- или short-значения. Для считывания и записи двоичных значений встроенных С#-типов используйте классы BinaryReader иBinaryWriter.

Важно понимать, что эти данные считываются и записываются с использованием внутреннего двоичного формата, а не в текстовой форме, понятной человеку.Класс BinaryWriterКласс BinaryWriter представляет собой оболочку для байтового потока, котораяуправляет записью двоичных данных.

Его наиболее употребительный конструкторимеет следующий вид:BinaryWriter(Stream outputStream)Здесь элемент outputStreamозначает поток, в который будут записываться данные. Чтобы записать выходные данные в файл, можно использовать для этого параметра объект, созданный классом FileStream. Если поток outputStreamимеетnull-значение, генерируется исключение типа ArgumentNullException, а если поток outputStream не открыт для записи, — исключение типа ArgumentException.В классе BinaryWriter определены методы, способные записывать значения всехвстроенных С#-типов (некоторые из них перечислены в табл. 14.5).

Обратите внимание: значение типа s t r i n g записывается с использованием внутреннего формата, который включает спецификатор длины. В классе BinaryWriter также определеныстандартные методы p l o s e () и Flush (), работа которых описана выше.Таблица 14.5. Методы вывода информации, определенные в классе BinaryWriterМетодvoid w r i t e (sbyte val)void w r i t e (byte val)394ОписаниеЗаписывает byte-значение (со знаком)Записывает byte-значение (без знака)Часть I. Язык С#Окончание табл. 14.5МетодОписаниеv o i d w r i t e ( b y t e [ ] buf)Записывает массив byte-значенийv o i d w r i t e ( s h o r t vai)Записывает целочисленное значение типа s h o r t (короткое целое)v o i d w r i t e ( u s h o r t vai)Записывает целочисленное u s h o r t -значение (короткое целое без знака)v o i d w r i t e ( i n t vai)Записывает целочисленное значение типа i n tv o i d w r i t e ( u i n t vai)Записывает целочисленное uint-значение (целое без знака)void w r i t e (long vai)Записывает целочисленное значение типа l o n g (длинное целое)v o i d w r i t e ( u i o n g vai)Записывает целочисленное uiong-значение (длинное целое без знака)v o i d w r i t e ( f l o a t vai)Записывает float-значениеv o i d w r i t e (double v a i )Записывает double-значениеv o i d w r i t e ( c h a r vai)Записывает символvoid w r i t e (char[] buf)Записывает массив символовv o i d w r i t e ( s t r i n g vai)Записывает string-значение с использованием его внутреннего представления, которое включает спецификатор длиныКласс BinaryReaderКласс BinaryReader представляет собой оболочку для байтового потока, котораяуправляет чтением двоичных данных.

Его наиболее употребительный конструкторимеет такой вид:BinaryReader(Stream.inputStream)Здесь элемент inputStreamозначает поток, из которого считываются данные.Чтобы выполнить чтение из файла, можно использовать для этого параметра объект,созданный классом FileStream. Если поток inputStream имеет null-значение, генерируется исключение типа ArgumentNullException, а если поток inputStream неоткрыт для чтения,— исключение типа ArgumentException.В классе BinaryReader предусмотрены методы для считывания всех простых С#типов.

Наиболее употребимые из них показаны в табл. 14.6. Обратите внимание на то,что метод ReadStringO считывает строку, которая хранится с использованием внутреннего формата, включающего спецификатор длины. При обнаружении конца потока все эти методы генерируют исключение типа EndOfStreamException, а при возникновении ошибки — исключение типа IOException.

В классе BinaryReader также определены следующие версии метода Read ():МетодОписаниеi n t Re a d ()Возвращает целочисленное представление следующего доступного символа из вызывающего входного потока. При обнаружении конца файла возвращает значение -1i n t Read ( b y t e [ ] buf,i n t offset,i n t num)Делает попытку прочитать num байтов в массив buf, начиная с элементаbuf[offset],и возвращает количество успешно считанных байтовi n t Read (char [ ] buf,i n t offset,i n t лшп)Делает попытку прочитать лил символов в массив buf, начиная с элементаbuf[offset],и возвращает количество успешно считанных символовВ случае неудачного исхода операции чтения эти методы генерируют исключениетипа IOException.Глава 14.

Использование средств ввода-вывода395В классе BinaryReader также определен стандартный метод Close ( ) .Таблица 14.6. Методы ввода данных, определенные в классе BinaryReadezМетодОписаниеbool ReadBoolean()Считывает booi-значениеbyte ReadByte()Считывает byte-значениеsbyte ReadSByteOСчитывает sbyte-значениеbyte[] ReadBytes(int num)Считывает лит байтов и возвращает их в виде массиваchar ReadChar()Считывает char-значениеchar[] ReadChars(int num)Считывает л и т символов и возвращает их в виде массиваdouble ReadDouble()Считывает double-значениеfloat ReadSmgle ()Считывает float-значениеshort Readlntl6()Считывает short-значениеi n t Readlnt32()Считывает int-значениеlong Readlnt64()Считывает long-значениеushort ReadUIntl6()Считывает ushort-значениеuint ReadUInt32()Считывает uint-значениеulong ReadUInt64()Считывает uiong-значениеs t r i n g ReadStringOСчитывает string-значение, представленное во внутреннем двоичномформате, который включает спецификатор длины.

Этот метод следует использовать для считывания строки, которая была записана с помощьюобъекта класса B i n a r y W r i t e rДемонстрация использования двоичного ввода-выводаРассмотрим программу, которая иллюстрирует использование классов BinaryReaderи BinaryWriter.

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

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

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

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