Учебное пособие по потоку в C#: StreamReader и StreamWriter [Пример]
Что такое поток C#?
В файловых операциях C# потоки обычно используются для чтения и записи файлов. Поток — это дополнительный слой, создаваемый между приложением и файлом. Поток используется для обеспечения плавных операций чтения и записи в файл.
Потоки обычно используются при чтении данных из больших файлов. При использовании потоков данные из больших файлов разбиваются на небольшие фрагменты и отправляются в поток. Эти фрагменты данных затем можно прочитать из приложения.
Причина разбиения его на небольшие фрагменты заключается в том, что чтение большого файла за один раз влияет на производительность. Если бы вы прочитали данные, скажем, из файла размером 100 МБ за один раз, ваше приложение могло бы просто зависнуть и стать нестабильным. В таком случае лучший подход — использовать потоки для разбиения файла на управляемые фрагменты.
Таким образом, когда в файл выполняется операция записи, данные, подлежащие записи, сначала записываются в поток. Затем данные из потока записываются в файл. То же самое касается и операции чтения. При операции чтения данные сначала передаются из файла в поток. Затем данные считываются из приложения через поток. Давайте посмотрим на пример того, как мы можем читать и писать с помощью потоков.
Потоковый читатель
Устройство чтения потоков используется для чтения данных из файла с помощью потоков. Данные из файла сначала считываются в поток. После этого приложение считывает данные из потока.
В нашем примере мы предположим, что на диске D у нас есть файл с именем example.txt. Файл будет простым текстовым файлом и будет состоять из двух строк, как показано ниже.
- Гуру99 – .Net
- Гуру99 -С#
В нашем примере мы создадим простое консольное приложение и будем работать с файловыми потоками.
Давайте рассмотрим пример того, как мы можем использовать потоки для чтения данных из файла. Введите приведенный ниже код в файл program.cs.
using System; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { static void Main(string[] args) { String path = @"D:\Example.txt"; using (StreamReader sr = File.OpenText(path)) { String s = ""; while ((s = sr.ReadLine()) != null) { Console.WriteLine(s); } } Console.ReadKey(); } } }
Объяснение кода: -
- Сначала мы объявляем объект чтения потока. Объект чтения потока используется в C# для определения потока из файла в приложение. Данные будут передаваться из файла в поток всякий раз, когда данные читаются из файла. Файл.OpenText используется для открытия файла «Example.txt» в режиме только для чтения. Обработчик файла затем отправляется объекту чтения потока.
- Далее мы определяем временную переменную «s», которая будет использоваться для чтения всех данных из файла.
- Затем мы используем метод чтения потока ReadLine для чтения каждой строки из буфера потока. Когда мы это выполняем операция, каждая строка сначала будет перенесена из файла в буфер. Тогда строковая строка будет передана из буфера в переменную 's'. Затем мы записываем содержимое строки 's' в консоль.
Когда приведенный выше код установлен и проект запускается с использованием Visual Studio, вы получите результат ниже.
Выход:-
Из вывода видно, что Stream Reader прочитал обе строки из файла. Наконец, строки строки, считанные из потока, были отправлены в консоль.
Потоковый писатель
Средство записи потока используется для записи данных в файл с использованием потоков. Данные из приложения сначала записываются в поток. После этого поток записывает данные в файл. Давайте рассмотрим пример того, как мы можем использовать потоки для записи данных из файла. Введите приведенный ниже код в файл program.cs.
using System; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { static void Main(string[] args) { String path = @"D:\Example.txt"; using (StreamWriter sr = File.AppendText(path)) { sr.WriteLine("Guru99 - ASP.Net"); sr.Close(); Console.WriteLine(File.ReadAllText(path)); } Console.ReadKey(); } } }
Объяснение кода: -
- Сначала мы объявляем объект записи потока. Объект записи потока используется в C# для определения потока. Затем поток используется для записи данных из приложения в файл. Данные будут передаваться из приложения в поток всякий раз, когда данные необходимо записать. Команда File.AppendText используется для открытия файла «Example.txt» в режиме добавления. Обработчик файла затем отправляется объекту записи потока.
- Мы используем метод записи потока Writeline для записи в поток строки «Guru99 – ASP.Net». Из потока строка будет записана в файл.
- Затем мы закрываем средство записи потока после записи в файл. Обычно хорошей практикой является закрытие обработчиков файлов, когда файл больше не требуется для записи.
- Наконец, мы снова читаем содержимое файла и записываем его в журнал консоли. Это проверка того, была ли строка записана в файл.
Когда приведенный выше код установлен и проект запускается с использованием Visual Studio, вы получите приведенный ниже вывод.
Выход:-
Из вывода видно, что строка «Guru99 — ASP.Net» была успешно добавлена в файл. Все 3 строки текста можно увидеть в консоли.
Резюме
- Потоки используются как промежуточный уровень между приложением и файлом.
- StreamReader используется всякий раз, когда требуется прочитать данные из файла.
- Streamwriter используется всякий раз, когда данные необходимо записать в файл.