Pytanie:
Czym się różni FileStream
i StreamWriter
w .Net ?
W jakim kontekście masz go użyć? Jaka jest ich zaleta i wada?
Czy można połączyć te dwa w jedno?
źródło
Pytanie:
Czym się różni FileStream
i StreamWriter
w .Net ?
W jakim kontekście masz go użyć? Jaka jest ich zaleta i wada?
Czy można połączyć te dwa w jedno?
Czym różni się FileStream i StreamWriter w dotnet?
A FileStream
jest Stream
. Podobnie jak wszystkie strumienie, zajmuje się tylko byte[]
danymi.
A StreamWriter : TextWriter
, jest dekoratorem strumienia. TextWriter koduje dane tekstowe, takie jak ciąg lub znak, byte[]
a następnie zapisuje je w połączonym Stream
.
W jakim kontekście masz go użyć? Jaka jest ich zaleta i wada?
Gdy masz byte[]
dane, używasz samego FileStream . Dodajesz StreamWriter
kiedy chcesz napisać tekst. Użyj programu formatującego lub serializatora, aby pisać bardziej złożone dane.
Czy można połączyć te dwa w jedno?
Tak. Aby utworzyć StreamWriter, zawsze potrzebujesz strumienia. Metoda pomocnicza System.IO.File.CreateText("path")
utworzy je w kombinacji, a następnie wystarczy Dispose () zewnętrzny zapisujący.
FileStream
jest to rodzaj strumienia, który jest specjalnie dostosowany do plików. Strumienie natywnie działają z bajtami, jednakStreamWriter
/ Reader będzie zapisywać / odczytywać tekst w dowolnym strumieniu, nie tylkoFileStream
s. Na przykładMemoryStreams
,NetworkStreams
itp ..FileStream zapisuje bajty, StreamWriter zapisuje tekst. To wszystko.
źródło
FileStream jest jawnie przeznaczony dla plików roboczych.
StreamWriter może służyć do przesyłania strumieniowego do dowolnego typu strumienia - gniazd sieciowych, plików itp.
ScottGu całkiem ładnie wyjaśnia różne obiekty Stream tutaj: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
źródło
Cóż, z MSDN dla
FileStream
:oraz MSDN dla
StreamWriter
:Najbardziej oczywistą różnicą jest to, że
FileStream
pozwala na operacje odczytu / zapisu, podczas gdyStreamWriter
jest to tylko zapis.StreamWriter
Strona idzie do dodania:Więc druga różnica dotyczy
FileStream
bajtów, podczas gdyStreamWriter
dotyczy tekstu.źródło
Są to dwa różne poziomy wykorzystywane do przekazywania informacji do znanych źródeł danych.
A
FileStream
to typ strumienia, który jest koncepcyjnie mechanizmem wskazującym na jakąś lokalizację i może obsługiwać dane przychodzące i / lub wychodzące do iz tej lokalizacji. Istnieją strumienie do odczytu / zapisu do plików, połączeń sieciowych, pamięci, potoków, konsoli, detektorów debugowania i śledzenia oraz kilku innych typów źródeł danych. W szczególnościFileStream
istnieje do wykonywania odczytów i zapisów w systemie plików. Większość strumieni ma dość niski poziom wykorzystania i traktuje dane jako bajty.A
StreamWriter
jest opakowaniem dla Stream, które upraszcza używanie tego strumienia do wyprowadzania zwykłego tekstu. Udostępnia metody, które pobierają ciągi zamiast bajtów i wykonuje niezbędne konwersje do iz tablic bajtowych. Są inni pisarze; drugim głównym, którego użyjesz, jest tenXmlTextWriter
, który ułatwia zapisywanie danych w formacie XML . Istnieją również odpowiedniki programu Reader dla Writerów, które podobnie zawijają strumień i ułatwiają odzyskiwanie danych.źródło
Jedną z kluczowych różnic (oprócz powyższych komentarzy) może być to, że FileStream obsługuje losowy dostęp do dysku w trybie odczytu i zapisu do dowolnego określonego obiektu FileStream.Position. W przypadku dużych modyfikacji plików może to być nieocenione.
źródło