В файловых операциях C # обычно потоки используются для чтения и записи в файлы. Поток — это дополнительный слой, созданный между приложением и файлом. Поток используется для обеспечения плавных операций чтения и записи в файл.
Потоки обычно используются при чтении данных из больших файлов. Используя потоки, данные из больших файлов разбиваются на маленькие куски и отправляются в поток. Эти куски данных могут быть затем прочитаны из приложения.
Причина, по которой он разбивается на небольшие фрагменты, заключается в влиянии на производительность чтения большого файла за один раз. Если вы будете читать данные, скажем, из файла размером 100 МБ за один раз, ваше приложение может просто зависнуть и стать нестабильным. Тогда лучше всего использовать потоки, чтобы разбить файл на управляемые куски.
Поэтому, когда операция записи выполняется в файл, данные для записи сначала записываются в поток. Из потока данные затем записываются в файл. То же самое касается операции чтения. В операции чтения данные сначала передаются из файла в поток. Затем данные считываются из приложения через поток. Давайте посмотрим на пример того, как мы можем читать и писать, используя потоки.
В этом уроке вы узнаете
Stream Reader
Средство чтения потоков используется для чтения данных из файла с использованием потоков. Данные из файла сначала считываются в поток. После этого приложение считывает данные из потока.
Для нашего примера мы будем предполагать, что у нас есть диск на диске D с именем Example.txt. Файл будет простым текстовым файлом и будет иметь 2 строки, как показано ниже
- Guru99 — .Net
- Guru99 -C #
Для нашего примера мы создадим простое консольное приложение и будем работать с файловыми потоками.
Давайте рассмотрим пример того, как мы можем использовать потоки для чтения данных из файла. Введите приведенный ниже код в файл 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 # для определения потока из файла в приложение. Данные будут выталкиваться из файла в поток всякий раз, когда данные считываются из файла. File.OpenText используется для открытия файла «Example.txt» в режиме только для чтения. Обработчик файла затем отправляется объекту потокового чтения.
- Далее мы определяем временную переменную ‘s’, которая будет использоваться для чтения всех данных из файла.
- Затем мы используем метод чтения потоков ReadLine для чтения каждой строки из буфера потока. Когда мы выполним эту операцию, каждая строка будет сначала передана из файла в буфер. Затем строка строки будет перенесена из буфера в переменную ‘s’. Затем мы записываем содержимое строки ‘s’ в консоль.
Когда приведенный выше код установлен и проект запущен с использованием Visual Studio, вы получите следующий вывод.
Вывод:-
Из вывода видно, что Stream Reader считывает обе строки из файла. Наконец, строки строки, считанные из потока, были отправлены на консоль.
Stream Writer
Модуль записи потоков используется для записи данных в файл с использованием потоков. Данные из приложения сначала записываются в поток. После этого поток записывает данные в файл. Давайте рассмотрим пример того, как мы можем использовать потоки для записи данных из файла. Введите приведенный ниже код в файл 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 используется всякий раз, когда данные должны быть записаны в файл.