Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
файлы лекция (основная).pdf
Скачиваний:
31
Добавлен:
15.04.2015
Размер:
938.85 Кб
Скачать

8 Краткие выводы

8.1 Создание и чтение бинарного файла

Для создания бинарного файла можно использовать класс Binarywriter:

// Создаем бинарный поток для записи файла

FileStream fs = new FileStream(FileName, FileMode.CreateNew);

BinaryWriter w = new BinaryWriter(fs); // Записываем данные в файл

for (int i = 0; i < 11; i++)

{

w.Write ( (int) i);

)

//Закрываем файл w.Close();

//fs.CloseO; не требуется, будет вызван автоматически!

Чтение бинарного файла производится с помощью класса BinaryReader:

// Создание бинарного потока для чтения файла

fs = new FileStream(FileName, FileMode.Open, FileAccess.Read); BinaryReader r = new BinaryReader (fs);

//Читаем данные из файла

for (int i = 0; i < 11; i++)

{

Console.WriteLine(r.ReadInt32());

}

//Закрываем поток

r.Close О;

//fs.Close(); не требуется, будет вызван автоматически!

8.2Создание текстового файла

Создание текстового файла проще всего выполнить с помощью класса StreamWriter:

using (StreamWriter sw = new StreamWriter("TestFile.txt"));

{

// Добавляем строки файла sw.Write("Первая"); sw.WriteLine("строка файла."); sw.WriteLine("Вторая строка файла");

}

Кроме того, можно использовать метод CreateText класса System.IO.File:

StreamWriter sw = File.CreateText(FILE_NAME); sw.WriteLine ("Первая строка");

sw.WriteLine ("Можно записать в файл int {0} или floats {1}",1, 4.2); sw.Close();

Отличие первого способа от второго заключается еще и в использовании оператора using, В первом случае закрытие потока произойдет автоматически при выходе за границу жизни sw, т. е. при выходе из границы using. Во втором случае требуется обязательный вызов метода Close(). При записи больших объемов данных может потребоваться вызов метода Flush().

8.3 Добавление в текстовый файл

Для добавления текста в текстовый файл предназначен метод AppendText класса StreamWriter, экземпляр которого возвращает метод File.AppendText:

StreamWriter sw;

swFile.AppendText ("C:\\MyTextFile.txt"); sw.WriteLine("new line");

sw.Close();

8.4 Чтение и запись в файл строк на русском языке

При записи строк на русском языке необходимо указывать соответствующую кодировку:

System.IO.StreamWriter sw = new System.IO.StreamWriter("test.txt",false);

System. Text.Encoding.GetEncoding(1251)); sw.WriteLine("Строка");

sw.Close ();

8.5 Посимвольное чтение текстового файла

Посимвольное чтение текстового файла осуществляется с помощью метода Read() класса StreamReader. Если достигнут конец файла, метод возвращает -1.

Метод Реек() выполняет те же действия, что и Read(), но при этом не передвигает указатель файла. Класс StreamReader находится в пространстве имен System.IO.

using System; using System.IO;

namespace ReadFilel

{

class Classl [STAThread]

static void Wain(string[J args)

{

// Создать объект для чтения файла

StreamReader reader; try

{

reader = new StreamReader("input.txt");

}

catch

{

// При открытии файла получили исключение Console.WriteLine("Ошибка открытия файла"); return;

}

// Посимвольное чтение файла int ch;

while ((ch = reader.Read()) != -1)

{

Console.WriteLine(ch);

}

}

}

}

8.6 Построчное чтение текстового файла

Построчное чтение текстового файла осуществляется с помощью метода ReadLine() класса System.IO.StreamReader. Если достигнут конец файла, метод возвращает null.

FileStream fs = new FileStream( @"с:\test.txt", FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader( fs );

string curLine = String.Empty;

while ( (curLine = sr.ReadLine()) != null )

{

Console.WriteLine( curLine );

}

sr.Close();

8.7 Чтение файла полностью

Текстовый файл можно полностью загрузить в строку c помощью метода ReadToEnd() класса System.IO.StreamReader. Если достигнут конец файла, возвращает null.