Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа9_C#.doc
Скачиваний:
118
Добавлен:
23.03.2015
Размер:
143.87 Кб
Скачать

2. Практическая часть

2.1 Чтение данных из файла с произвольным доступом

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

2. Откройте новый проект выбрав File | New | Project. Выберите пункт С# Console Application и назовите его ReadFile.

3. Добавьте следующее объявления пространств имен в самое начало файла Program.cs. Пространство именSystem.IOнеобходимо для класса FileStream.

using System.IO;

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

static void Main(string[] args)

{

byte[] byData = new byte[100];

char[] charData = new Char[100];

try

{

//открывает свой файл кода для чтения, ../ исспользуется для доступа

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

//Переход на 55 позицию от начала

aFile.Seek(55,SeekOrigin.Begin);

//Читает в буфер byData 100 символов

aFile.Read(byData,0,100);

}

catch(IOException e)

{

//Обработка исключительных ситуаций

Console.WriteLine("An IO exception has been thrown!");

Console.WriteLine(e.ToString());

Console.ReadLine();

return;

}

//Преобразование символов в другую кодировку

Decoder d = Encoding.UTF8.GetDecoder();

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

//Вывод результата на консоль

Console.WriteLine(charData);

Console.ReadLine();

return;

}

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

Рис. 9.1.Результат работы программы

2.2 Запись данных в файл с произвольным доступом

Измените в приведенном выше примере код функции Main() на приведенный ниже.

static void Main(string[] args)

{

byte[] byData = new byte[100];

char[] charData = new Char[100];

charData = "Hello World".ToCharArray();

try

{

FileStream aFile = new FileStream("Temp.txt", FileMode.OpenOrCreate);

Encoder e = Encoding.UTF8.GetEncoder();

//Преобраование символьного масива в массив байтов

e.GetBytes(charData, 0, charData.Length, byData, 0, true);

// Перемещение указателя файла в самое начало файла

aFile.Seek(0, SeekOrigin.Begin);

// Непосредственно запись в файл

aFile.Write(byData, 0, byData.Length);

}

catch (IOException ex)

{

Console.WriteLine("An 10 exception has been thrown!");

Console.WriteLine(ex.ToString());

Console.ReadLine();

return;

}

}

Далее откомпилируйте приложение и запустите. Оно будет выполнятся некоторое время, после чего завершится. Перейдите в директорию приложения, файл будет сохранен именно в ней, так как используется относительный путь. Это в папке с проектом, \ ..\bin\Debug. В ней вы обнаружите файлtemp.txt, размером ровно 100 байт. В нем будет содержаться текст“Hello world”.

Программа работает аналогично программе чтения, только здесь файл открывается для записи, а не для чтения. Аналогично используется объект Encoderи поиск позиции внутри файла.