В файловых операциях C # потоки обычно используются для чтения и записи файлов. Поток - это дополнительный уровень, созданный между приложением и файлом. Поток используется для обеспечения плавных операций чтения и записи в файл.
Потоки обычно используются при чтении данных из больших файлов. Используя потоки, данные из больших файлов разбиваются на небольшие фрагменты и отправляются в поток. Затем эти фрагменты данных можно прочитать из приложения.
Причина, по которой его разбивают на небольшие части, заключается в том, что чтение большого файла за один раз влияет на производительность. Если бы вы считали данные, скажем, из файла размером 100 МБ за один раз, ваше приложение могло просто зависнуть и стать нестабильным. Тогда лучший подход - использовать потоки, чтобы разбить файл на управляемые части.
Таким образом, когда операция записи выполняется в файл, данные, которые должны быть записаны, сначала записываются в поток. Затем данные из потока записываются в файл. То же самое и с операцией чтения. В операции чтения данные сначала передаются из файла в поток. Затем данные считываются из приложения через поток. Давайте посмотрим на пример того, как мы можем читать и писать, используя потоки.
В этом руководстве вы узнаете:
- Читатель потока
- Stream Writer
Читатель потока
Считыватель потоков используется для чтения данных из файла с помощью потоков. Данные из файла сначала считываются в поток. После этого приложение считывает данные из потока.
В нашем примере мы предположим, что у нас есть файл на диске 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 используется всякий раз, когда необходимо записать данные в файл.