Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 263

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 257 258 259 260 261 262 < 263 > 264 265 266 267 268 269 .. 404 >> Следующая


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

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

Практикум: чтение данных из файла с произвольным доступом

1. Откройте Visual Studio.NET.

2. Откройте новый проект, выбрав File | New | Project.

Выберите пункт C# Console Application и назовите его ReadFile (см. рис. слева).

3. Добавьте два следующих объявления пространств имен

в самое начало файла ciaasi.es. Пространство имен System.IO необходимо для класса Filestream, а пространство имен system.Text потребуется для осуществления

2rO‘--t 1

i_J чЬил (лиг 'J2 vnu* Сп<М<

.U C++ pojada I end nit* Projetb Й ?j OI>f РГИТЯ*

Гин|

И

ASP Web A5PJ<?F Web w AOxttd AfCtc-nnan Service Uv tiv

А-рефйт to crcwr-i вдвдм

J

Vr'riijw* Ei/ciy Pr6Ject iwvfcr »]

lotfdCcrv jc ¦'i.Dervei^'nEfi'ifi'* Ю '

ГгУ&Л t* r-wud У *

I - I • .<*'

]_fr . L
564

Глава 20

преобразования, которое нам придется выполнять над бантам»,

считанными из файла.

using System; using System.10; using System.Text;

4. Добавьте следующий код в метод Main():

static void Main|string[] args)

( ......... ............. ........¦¦ ¦ _-

byte[] byData - new byte[100I; char[] charData = new Char [100J; try (

FileStrean aFile « new FileStream('../../Claesl.cs',Filelfode.Open); aFile. SeeJd 55,SeekOrigin.Begin); aFile.Read(byData,0,100);

)

catch(IOException e)

{

Console.WriteLinet'An IO exception has been thrown!*);

Console.WriteLine <e.ToStrinj());

Console.ReadLine(); return;

)

Decoder d * Encoding.UTF8.GetDecoder 0 ; .

d.GetChars(byData, 0, byData.Length, charData, 0);

Console.WritoLine(charData)t Console.ReadLine()t

return; ,

C:\DgvctflpiT№nt\FiteIQ\Rc4dfj|t!\blo\fk*bug\rtu«jdFilt!.uxu HlJSl E3

пигкм: iitit: l: Hu «ill "i 1л:

< ,

/// '.'if i'i j)i. iun iuv CTl,i:.rl.

/// </::«! .r.^ryi

5. Запустите приложение. Вы должны увидеть приблизительно такой выходной поток, какой показан на рисунке слева.

Имейте в виду, что выходной поток на вашем компьютере может существенно отличаться от изображенного на рисунке. Нажмите клавишу Enter для закрытия консоли.

Как это работает — Чтение данных из файла с произвольным доступом

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

Filestream aFile = new FileStream(/Claeel.cs", FileMode.Open);

Две строки кода, которые в действительности осуществляют поиск по файлу и считывание из него, имеют следующий вид:

try {

aFile.Seek(55,SeekOrigin.Begin); aFile.Read(byData,0,100)j
Работа с файлами

565

catch(IOException е)

{

Console.WriteLine!'Ап 10 exception has been thrown!');

Console.WriteLineIe.ToStringО);

Console.ReadLine();

return;

)

В результате выполнения первой из них указатель файла перемещается на 55-й байт файла. Это символ ‘п’ из слова namespace; 54 предыдущих символа находятся в строках с диреетивами using. В результате выполнения второй строки следующие 100 баЙТОВ СЧНТЫВаЮТСЯ В баЙТОВЫЙ маССИВ byData.

Обратите внимание на то, что нами используется конструкция для обработки исключительных ситуаций try-catch, с которой мы познакомились в главе 7. Практически любая операция, связанная с вводом/выводом, может привести к возникновению исключительной ситуации типа IOException. Любой исполнимый код должен включать в себя обработку исключительных ситуаций, особенно если в нем ведется работа с файловой системой. Во всех примерах настоящей главы будет использоваться некоторый основополагающий способ обработки ошибок.

После того как информация считана из файла в байтовый массив, возникает необходимость преобразовать ее в символьный массив с тем, чтобы получить возможность выводить ее на консоль. С этой целью мы воспользуемся классом Decoder из пространства имен system.Text, Этот класс предназначен для того, чтобы преобразовывать исходные байты в какие-либо более полезные объекты, например, в символы:

Decoder d = Encoding.UTF8.GetDecoder(); d.GetChars(byData, 0, byData.Length, charData, 0);

В этих строках осуществляется создание объекта Decoder, который основывается на кодировке UTF8. Это схема кодирования Unicode. После этого вызывается метод Getchara <), который принимает массив бантов и преобразовывает его в массив символов. После завершения этой процедуры массив символов оказывается готовым к выводу на консоль.
Предыдущая << 1 .. 257 258 259 260 261 262 < 263 > 264 265 266 267 268 269 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.