Урок за поток за C #: StreamReader, StreamWriter с пример

Съдържание:

Anonim

При C # файловите операции обикновено се използват потоци за четене и запис във файлове. Потокът е допълнителен слой, създаден между приложение и файл. Потокът се използва за осигуряване на гладки операции за четене и запис във файла.

Потоците обикновено се използват при четене на данни от големи файлове. Чрез използване на потоци данните от големи файлове се разбиват на малки парчета и се изпращат в потока. След това тези части от данни могат да бъдат прочетени от приложението.

Причината за разбиването му на малки парченца е поради въздействието на производителността при четене на голям файл с един кадър. Ако трябваше да прочетете данните от да речем, файл от 100 MB на един изстрел, приложението ви може просто да увисне и да стане нестабилно. Тогава най-добрият подход е да се използват потоци за разбиване на файла на управляеми парчета.

Така че, когато се извършва операция за запис върху файл, данните, които трябва да бъдат записани, първо се записват в потока. От потока данните след това се записват във файла. Същото важи и за операцията за четене. При операцията за четене данните първо се прехвърлят от файла в потока. След това данните се четат от приложението чрез потока. Нека разгледаме пример за това как можем да четем и пишем с помощта на потоци.

В този урок ще научите -

  • Четец на потоци
  • 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();}}}

Обяснение на кода: -

  1. Първо, декларираме обект на четец на потоци. Обектът за четене на потоци се използва в C # за дефиниране на поток от файла към приложението. Данните ще бъдат изтласкани от файла в потока, когато данните се четат от файла. File.OpenText се използва за отваряне на файла "Example.txt" в режим само за четене. След това манипулаторът на файла се изпраща към обекта за четене на поток.
  2. След това дефинираме временна променлива, която ще се използва за четене на всички данни от файла.
  3. След това използваме метода 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();}}}

Обяснение на кода: -

  1. Първо, ние декларираме обект на писател на потоци. Обектът за запис на потоци се използва в C # за дефиниране на поток. След това потокът се използва за записване на данни от приложението във файла. Данните ще бъдат изтласкани от приложението в потока, когато трябва да се запишат данни. Командата File.AppendText се използва за отваряне на файла "Example.txt" в режим на добавяне. След това манипулаторът на файла се изпраща към обекта за запис на потоци.
  2. Използваме метода за запис на потока Writeline, за да напишем в потока реда "Guru99 - ASP.Net". След това от потока редът ще бъде записан във файла.
  3. След това затваряме писателя на потоци, след като пишем във файла. Обикновено е добра практика да затваряте манипулатори на файлове, когато файлът вече не е необходим за писане.
  4. И накрая, ние отново четем съдържанието на файла и го записваме в дневника на конзолата. Това е, за да се провери дали редът е записан във файла.

Когато горният код е зададен и проектът се изпълни с помощта на Visual Studio, ще получите изхода по-долу.

Изход: -

От изхода можете да видите, че редът "Guru99 - ASP.Net" е добавен към файла успешно. Всички 3 реда текст могат да се видят в конзолата.

Обобщение

  • Потоците се използват като междинно ниво между приложението и файла.
  • StreamReader се използва винаги, когато се изисква четене на данни от файл.
  • Streamwriter се използва винаги, когато данните трябва да бъдат записани във файл.