О том как работать в языке программирования 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();