Потік у C# Навчальний посібник: StreamReader & StreamWriter [Приклад]
Що таке C# Stream?
У файлових операціях C# зазвичай потоки використовуються для читання та запису файлів. Потік — це додатковий рівень, створений між програмою та файлом. Потік використовується для забезпечення плавного читання та запису у файл.
Потоки зазвичай використовуються під час читання даних із великих файлів. За допомогою потоків дані з великих файлів розбиваються на невеликі фрагменти та надсилаються в потік. Потім ці фрагменти даних можна прочитати з програми.
Причиною розбиття його на невеликі частини є вплив читання великого файлу за один раз на продуктивність. Якщо ви прочитаєте дані, скажімо, із файлу розміром 100 Мб за один раз, ваша програма може просто зависнути та стати нестабільною. Тоді найкращим підходом є використання потоків для розбиття файлу на керовані частини.
Отже, коли операція запису виконується у файл, дані, які потрібно записати, спочатку записуються в потік. Потім дані з потоку записуються у файл. Те саме стосується операції читання. Під час операції читання дані спочатку передаються з файлу в потік. Потім дані зчитуються з програми через потік. Давайте розглянемо приклад того, як ми можемо читати та писати за допомогою потоків.
Читач потоків
Зчитувач потоків використовується для читання даних із файлу за допомогою потоків. Дані з файлу спочатку зчитуються в потік. Після цього програма зчитує дані з потоку.
Для нашого прикладу ми припустимо, що у нас є файл на диску 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# для визначення потоку від файлу до програми. Дані надсилатимуться з файлу в потік кожного разу, коли дані зчитуються з файлу. Файл.OpenText використовується для відкриття файлу «Example.txt» у режимі лише для читання. Потім обробник файлу надсилається до об’єкта читача потоку.
- Далі ми визначаємо тимчасову змінну 's', яка використовуватиметься для читання всіх даних із файлу.
- Потім ми використовуємо метод читання потоку ReadLine для читання кожного рядка з буфера потоку. Коли ми виконуємо це операція, кожен рядок спочатку буде перенесено з файлу в буфер. Тоді рядок рядка буде передано з буфера до змінної 's'. Потім ми записуємо вміст рядка 's' на консоль.
Коли наведений вище код встановлено, а проект запускається за допомогою Visual Studio, ви отримаєте наведений нижче результат.
Вихід:-
З результату ви можете побачити, що Stream Reader прочитав обидва рядки з файлу. Нарешті, рядки рядка, прочитаного з потоку, були відправлені на консоль.
Потік 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 використовується, коли дані потрібно записати у файл.