У файлових операціях C # зазвичай потоки використовуються для читання та запису у файли. Потік - це додатковий рівень, створений між програмою та файлом. Потік використовується для забезпечення плавного виконання операцій читання та запису у файл.
Потоки зазвичай використовуються при зчитуванні даних з великих файлів. Використовуючи потоки, дані з великих файлів розбиваються на невеликі шматки та надсилаються в потік. Потім ці фрагменти даних можна прочитати з програми.
Причина його розбиття на невеликі шматки полягає у впливі продуктивності читання великого файлу одним кадром. Якби ви прочитали дані, скажімо, файлу розміром 100 МБ за один постріл, ваша програма могла б просто зависнути і стати нестабільною. Тоді найкращим підходом є використання потоків для розбиття файлу на керовані фрагменти.
Отже, коли операція запису виконується у файл, дані, які потрібно записати, спочатку записуються в потік. З потоку дані потім записуються у файл. Те саме стосується операції зчитування. В операції зчитування дані спочатку передаються з файлу в потік. Далі дані зчитуються з програми через потік. Давайте розглянемо приклад того, як ми можемо читати та писати за допомогою потоків.
У цьому підручнику ви дізнаєтесь-
- Потік Reader
- Потік Writer
Потік Reader
Зчитувач потоків використовується для зчитування даних із файлу за допомогою потоків. Дані з файлу спочатку зчитуються в потік. Після цього програма зчитує дані з потоку.
Для нашого прикладу ми припустимо, що на диску D у нас є файл, який називається Example.txt. Файл буде простим текстовим файлом і матиме 2 рядки, як показано нижче
- Guru99 - .Net
- Guru99 -C #
Для нашого прикладу ми створимо просту програму Console і будемо працювати з потоками файлів
Давайте розглянемо приклад того, як ми можемо використовувати потоки для зчитування даних із файлу. Введіть код нижче у файлі 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" у режимі лише для читання. Потім обробник файлу надсилається об'єкту зчитування потоку.
- Далі ми визначаємо тимчасову змінну, яка буде використовуватися для зчитування всіх даних із файлу.
- Потім ми використовуємо метод читання потоку ReadLine для зчитування кожного рядка з буфера потоку. Коли ми виконуємо цю операцію, кожен рядок спочатку переноситься з файлу в буфер. Тоді рядок рядка буде перенесено з буфера в змінну 's'. Потім ми записуємо вміст рядка 's' на консоль.
Коли встановлено наведений вище код і проект запущено за допомогою Visual Studio, ви отримаєте наведені нижче результати.
Вихід: -
З вихідних даних видно, що програма 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 використовується, коли дані потрібно записувати у файл.