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