W operacjach na plikach C # zwykle strumienie są używane do odczytu i zapisu w plikach. Strumień to dodatkowa warstwa tworzona między aplikacją a plikiem. Strumień służy do zapewnienia płynnych operacji odczytu i zapisu do pliku.
Strumienie są zwykle używane podczas odczytywania danych z dużych plików. Korzystając ze strumieni, dane z dużych plików są dzielone na małe fragmenty i wysyłane do strumienia. Te fragmenty danych można następnie odczytać z aplikacji.
Powodem dzielenia go na małe fragmenty jest wpływ na wydajność odczytu dużego pliku za jednym razem. Gdybyś odczytał dane z, powiedzmy, pliku 100 MB za jednym razem, twoja aplikacja mogłaby się zawiesić i stać się niestabilna. Najlepszym podejściem jest wtedy użycie strumieni do podzielenia pliku na łatwe do zarządzania fragmenty.
Więc kiedy operacja zapisu jest wykonywana na pliku, dane do zapisania są najpierw zapisywane w strumieniu. Ze strumienia dane są następnie zapisywane do pliku. To samo dotyczy operacji odczytu. W operacji odczytu dane są najpierw przesyłane z pliku do strumienia. Dane są następnie odczytywane z aplikacji za pośrednictwem strumienia. Spójrzmy na przykład, jak możemy czytać i pisać przy użyciu strumieni.
W tym samouczku nauczysz się:
- Czytnik strumieni
- Stream Writer
Czytnik strumieni
Czytnik strumieni służy do odczytywania danych z pliku za pomocą strumieni. Dane z pliku są najpierw wczytywane do strumienia. Następnie aplikacja odczytuje dane ze strumienia.
W naszym przykładzie założymy, że mamy plik na dysku D o nazwie Example.txt. Plik będzie prostym plikiem tekstowym i będzie miał 2 linie, jak pokazano poniżej
- Guru99 - .Net
- Guru99 -C #
W naszym przykładzie utworzymy prostą aplikację Console i będziemy pracować ze strumieniami plików
Spójrzmy na przykład, jak możemy użyć strumieni do odczytu danych z pliku. Wprowadź poniższy kod w pliku 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();}}}
Objaśnienie kodu: -
- Najpierw deklarujemy obiekt czytnika strumieniowego. Obiekt czytnika strumienia jest używany w języku C # do definiowania strumienia z pliku do aplikacji. Dane będą wypychane z pliku do strumienia za każdym razem, gdy zostaną odczytane z pliku. Plik File.OpenText służy do otwierania pliku „Example.txt” w trybie tylko do odczytu. Procedura obsługi pliku jest następnie wysyłana do obiektu czytnika strumienia.
- Następnie definiujemy zmienną tymczasową 's', która będzie używana do odczytu wszystkich danych z pliku.
- Następnie używamy metody czytnika strumienia ReadLine, aby odczytać każdy wiersz z bufora strumienia. Kiedy wykonujemy tę operację, każda linia zostanie najpierw przeniesiona z pliku do bufora. Następnie linia łańcucha zostanie przeniesiona z bufora do zmiennej „s”. Następnie zapisujemy zawartość łańcucha „s” w konsoli.
Gdy powyższy kod jest ustawiony, a projekt jest uruchamiany przy użyciu programu Visual Studio, otrzymasz poniższe dane wyjściowe.
Wynik:-
Na podstawie danych wyjściowych widać, że czytnik strumieni odczytuje oba wiersze z pliku. Na koniec wiersze ciągu odczytanego ze strumienia zostały przesłane do konsoli.
Stream Writer
Moduł zapisujący strumień służy do zapisywania danych do pliku przy użyciu strumieni. Dane z aplikacji są najpierw zapisywane w strumieniu. Następnie strumień zapisuje dane do pliku. Spójrzmy na przykład, jak możemy użyć strumieni do zapisu danych z pliku. Wprowadź poniższy kod w pliku 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();}}}
Objaśnienie kodu: -
- Najpierw deklarujemy obiekt zapisujący strumień. Obiekt modułu zapisującego strumień jest używany w języku C # do definiowania strumienia. Strumień jest następnie używany do zapisywania danych z aplikacji do pliku. Dane będą wypychane z aplikacji do strumienia za każdym razem, gdy trzeba będzie zapisać dane. Polecenie File.AppendText służy do otwierania pliku „Example.txt” w trybie dołączania. Procedura obsługi do pliku jest następnie wysyłana do obiektu zapisującego strumień.
- Używamy metody zapisu strumieniowego Writeline, aby zapisać wiersz „Guru99 - ASP.Net” w strumieniu. Ze strumienia linia zostanie następnie zapisana do pliku.
- Następnie zamykamy program zapisujący strumień po zapisaniu do pliku. Zwykle dobrą praktyką jest zamykanie programów obsługi plików, gdy plik nie jest już potrzebny do celów zapisu.
- Na koniec ponownie czytamy zawartość pliku i zapisujemy ją w dzienniku konsoli. Ma to na celu sprawdzenie, czy wiersz został zapisany w pliku.
Gdy powyższy kod jest ustawiony, a projekt jest uruchamiany przy użyciu programu Visual Studio, otrzymasz poniższe dane wyjściowe.
Wynik:-
Na podstawie danych wyjściowych widać, że wiersz „Guru99 - ASP.Net” został pomyślnie dodany do pliku. W konsoli można zobaczyć wszystkie 3 wiersze tekstu.
Podsumowanie
- Strumienie są używane jako poziom pośredni między aplikacją a plikiem.
- StreamReader jest używany zawsze, gdy dane mają być odczytywane z pliku.
- Streamwriter jest używany, gdy dane muszą zostać zapisane w pliku.