C#: Файлы как хранилище данных

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

Язык C# имеет три основных класса для работы с файлами FileStream, StreamWriter и StreamReader. Первый класс позволяет работать с файлами как с потоком байт, второй предназначен для работы с текстовыми файлами в режиме записи, третий для работы с текстовыми файлами в режими чтения.

StreamReader

По мне, даный класс удобно использовать в двух случаях:
1) если нужно файл прочитать по строкам;
2) если нужно быстро прочесть весь файл в буфер, для дальнейшего парсинга;

Наглядно это выглядит так:

StreamReader sr = new StreamReader("File.txt",  Encoding.Default);
string line = String.Empty;
int lineCount = 0;
while ((line = sr.ReadLine()) != null)
{
    //Читаем файл по строкам
    //line хранит значение строки 
    lineCount++;  
}
sr.Close();

sr = new StreamReader("File.txt",  Encoding.Default);
string text = sr.ReadToEnd();
//text хранит весь файл
sr.Close();

StreamWriter

Наглядно использование данного класса выглядит так:

StreamWriter sw = new StreamWriter("File.txt", false, Encoding.Default);
//false значит перезапись файла
sw.WriteLine("Строка 1");
sw.Write("Строка 2\r\n");
sw.Close();

sw = new StreamWriter("File.txt", true, Encoding.Default);
//true значит дописать в файл
sw.WriteLine("Строка 3");
sw.Close();

В результате имеем файл с содержанием:

Строка 1
Строка 2
Строка 3

FileStream

Это некоторый универсальный подход к работе с файлами. Позволяет работать с файлами как с массивом байт. Данный класс позволяет редактировать любой байт файла путем установки курсора Position, а так же дописать в файл, если Position указывает на конец файла.

FileStream fs = new FileStream("File.txt", FileMode.Open);
int b = fs.ReadByte();
fs.Seek(10); // Переходим на 10ый байт
fs.WriteByte((byte)0);
fs.Close();
Запись опубликована в рубрике C# с метками , , , . Добавьте в закладки постоянную ссылку.