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

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

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

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

В то же время доступ обозначает конкретный способ доступа к файлу. В последнем случае указывается одно из значений, определяемых в перечислении Р11еАссезэ и приведенных ниже. Р11еАссеэв.йеас(ХС1Се с11елссеэв.нг1Се с11едссеээ.Аеас( Например, в следующем примере кода файл Сеяс. бас открывается только для чтения. гг1еяссеаю 11п = пен г11еясгеаю("сенс.с1ас", г11емпбе.орел, г11еАссевв.веаб)г По завершении работы с файлом его следует закрыть, вызвав метод С1озе ( ) .

Ниже приведена общая форма обращения к этому методу. чп1Й С1ове() При закрытии файла высвобождаются системные ресурсы, распределенные для этого файла, что дает возможность использовать их для другого файла. Любопытно, что метод С1оэе () вызывает, в свою очередь, метод Овзрозе Н, который, собственно, и высвобождает системные ресурсы. ПРИМЕЧАНИЕ Оператор оя1пд, рассматриваемый в главе 20, предоставляет еще один способ закрытия файла, который больше не нужен. Такой способ оказывается удобным во многих случаях обращения с файлами, поскольку гарантирует закрытие ненужного больше файла простыми средствами.

Но исключительно в целях демонстрации основ обращения с файлами, в том числе и того момента, когда файл может быть закрыт, во всех примерах, представленных в этой главе, используются явные вызовы метода С 1 о з е ( ) . 444 Часть (. Язык С() Чтение байтов из потока файлового ввода-вывода В классе Г11еЯсгеаы определдны два метода для чтения байтов из файла; Ееас(нусе () и Ееас( () . Так, для чтения одного байта из файла используется метод Неас(Руге (), общая форма которого приведена ниже. Тпт НеаоВусе() Всякий раз, когда этот метод вызывается, из файла считывается один байт, который затем возвращается в виде целого значения. К числу вероятных исключений, которые генерируются при этом, относятся ИОСЯпррогсес(Ехсерг1оп (поток не открыт для ввода) и ОьпесьР1вровебехсерььоп (поток закрыт).

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

В приведенном ниже примере программы метод ееас(еусе () используется для ввода и отображения содержимого текстового файла, имя которого указывается в качестве аргумента командной строки. Обратите внимание на то, что в этой программе проверяется, указано ли имя файла, прежде чем пытаться открыть его. /* Отобразить содержимое текстового файла. Чтобы воспользоваться втой программой, укажите имя таге файла, содержимое которого требуется отобразить.

Например, для просмотра содержимого файла ТЕЯТ.СЯ введите в командной строке следуквгее: Звоев11е ТЕНТ.СЗ *l овгпд Яувсеш; пагод Яувсеш. 101 с1авв ЯЬону11е ( всасьс тог б Магп(всггпд(] агдв) ( Тпг Гг1еЯГгеаш Гьп; 11(агдв.ьепдгЬ != 1) ( Сопво1е.иг1севгпе("применение: ЯЬоыГ11е Файл" ) гегогп; ) ггу ( Ггп = пеы Е11езсгеаш(агдв[0], Г11енобе.орел); сагсЬ(1ОЕхсерс1оп ехо) ( сопво1е легггеььпе("не удается открыть файл" ); Сопво1е.игггегппе(ехс.мевваде)Г гесигп; О Файл не открывается, завершить программу П(ава 14. Применение средств ввода-вывода 445 О Читать байты да конца файла. ггу ( бо ( г = 11п. Реаоэусе (); 11(1 != -1) Сопво1е.нгтсе((сваг) г) ) нШ1е(1 != — 1); сагсп(10Ехсерг1оп ехс) ( Сопво1е,иггсеььпе("Ошибка чтения файла" ); Сопзо1е.иг1сеььпе(ехс.невваче); ) Ггпа11у ( Ггп.С1ове(); ) ) ) Обратите внимание на то, что в приведенной выше программе применяются два блока сгу.

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

Следовательно, второй блок сгу выполняется только в том случае, если в переменной Гдп содержится ссылка на открытый файл. Обратите также внимание на то, что файл закрывается в блоке 11па11у, связанном со вторым блоком сгу. Это означает, что независимо от того, как завершится цикл бо — и)з11е (нормально или аварийно из-за ошибки), файл все равно будет закрыт.

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

В качестве примера ниже приведен другой, более краткий вариант написания представленной выше программы Я)тонГ11е. О Отобразить содержимое текстового файла. цвтпч Яувгеьн цв1пч Яувсеи.10; с1ава ЯаонГ11е ( вгаггс нога наьп(всгтпч() агч*) Ьпс 1у Г11еЯГгеам Гьп = пц11; 11(агчв.ьепдгп != 1) ( Сопво1е .Игггекьпе (Мврименение: ЯбонГ11е Г11е") 1 гегцгп; ) УУ Использовать один блок Ггу для открытия файла и чтения из него 446 Часть (. Язык С(г ггу ( Гзп = пен Г11еэсгеаш(агчв(0), Г11еМобе.ореп); // Читать байты до конца файла. бо ( Гзп. Пеасяусе (); 1Г(1 != -1) Сопзо1е.яггсе((сваг) 1)( нш1е(1 != -1); сассп(гокхсерсзоп ехс) ( Сопзо1е .Игзсеввпе ("Ошибка ввода-вывода: 1п" ь ехс .Мевваче) ) Гьпа11у ( 1Г(Гьп != пц11) Г1п.с1озе(); ) ) Обратите внимание на то, что в данном варианте программы переменная г1п ссылки на объект класса Е11еэсгеаш инициализируется пустым значением.

Если файл удастся открыть в конструкторе класса Г11еэггеаш, то значение переменной й1п окажется непустым, а иначе — оно так и останется пустым. Это очень важно, поскольку метод С1озе ( ) вызывается внутри блока г 1па11у только в том случае, если значение переменной йзп оказывается непусгым. Подобный механизм препятствует любой попытке вызвать метод С1озе () для переменной бьп, когда она не ссылается на открытый файл. Благодаря своей компактности такой подход часто применяется во многих примерах организации ввода-вывода, приведенных далее в этой книге. Следует, однако, иметь в виду, что он не пригоден в тех случаях, когда ситуацию, возникающую в связи с невозможностью открыть файл, нужно обрабатывать отдельно. Так, если пользователь неправильно введет имя файла, то на экран, возможно, придется вывести приглашение правильно ввести имя файла, прежде чем входить в блок сгу, где осуществляется проверка правильности доступа к файлу.

В целом, порядок открытия, доступа и закрытия файла зависит от конкретного приложения. То, что хорошо в одном случае, может оказаться неприемлемым в другом. Поэтому данный процесс приходится приспосабливать к конкретным потребностям разрабатываемой программы. Запись В файл Для записи байта в файл служит метод Мг1гевуге ( ) . Ниже приведена его простейшая форма. чо1г( Игьгевусе (Ьусе ча1це) Этот метод выполняет запись в файл байта, обозначаемого параметром ча1це. Если базовый поток не открывается для вывода, то генерируется исключение мосецррогсес(ехсерс1оп. А если поток закрыт, то генерируется исключение ОЬзессц1зрозес(Ехсергзоп.

Для записи в файл целого массива байтов может быть вызван метод Мгзсе П . Ниже приведена его общая форма. чо1д Хггве (Ьусе (] аггау, гпс оуузес, гпс соипг) В методе Мгьге () предпринимается попытка записать в файл количество соцп С байтов из массива аггау, начиная с элемента аггау [ огг де с ) . Он возвращает количе- Глава 14.

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

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

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

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

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