Ktoś mi wyjaśni InputStream
i czym OutputStream
jest?
Jestem zdezorientowany co do przypadków użycia zarówno dla, jak InputStream
i dla OutputStream
.
Jeśli możesz dołączyć fragment kodu wraz z wyjaśnieniem, byłoby świetnie. Dzięki!
java
io
inputstream
outputstream
Czech
źródło
źródło
InputStream służy do odczytu, OutputStream do pisania. Są one połączone ze sobą jako dekoratory, dzięki czemu można odczytywać / zapisywać wszystkie różne typy danych ze wszystkich różnych rodzajów źródeł.
Na przykład możesz zapisać prymitywne dane do pliku:
Aby przeczytać spisaną treść:
Możesz użyć innych rodzajów strumieni, aby poprawić odczyt / zapis. Na przykład możesz wprowadzić bufor wydajności:
Możesz pisać inne dane, takie jak obiekty:
Możesz czytać z innych różnych źródeł wejściowych:
Dla większości strumieni wejściowych istnieje również strumień wyjściowy. Możesz zdefiniować własne strumienie do czytania / pisania specjalnych rzeczy, a istnieją złożone strumienie do czytania skomplikowanych rzeczy (na przykład istnieją strumienie do odczytu / zapisu w formacie ZIP).
źródło
Z samouczka Java :
Strumień to sekwencja danych.
Program wykorzystuje strumień wejściowy do odczytu danych ze źródła, pojedynczo:
Program wykorzystuje strumień wyjściowy do zapisywania danych do miejsca docelowego, pojedynczo:
Przykładowy kod z samouczka Oracle:
Program ten wykorzystuje bajt strumieni skopiować xanadu.txt plik outagain.txt , pisząc jeden bajt na raz
Spójrz na to pytanie SE, aby dowiedzieć się więcej o zaawansowanych strumieniach postaci, które są owijane na wierzchu strumieni bajtów:
strumień bajtów i strumień znaków
źródło
czytasz z InputStream i piszesz do OutputStream.
na przykład powiedz, że chcesz skopiować plik. Utworzyłbyś FileInputStream do odczytu z pliku źródłowego i FileOutputStream do zapisu do nowego pliku.
Jeśli twoje dane są strumieniem znaków, możesz użyć FileReader zamiast InputStream i FileWriter zamiast OutputStream, jeśli wolisz.
źródło
close
zawszeflush
es, więc nie.OutputStream to klasa abstrakcyjna reprezentująca zapisywanie danych wyjściowych. Istnieje wiele różnych klas OutputStream i piszą one do pewnych rzeczy (takich jak ekran, Pliki, tablice bajtów, połączenia sieciowe itp.). Klasy InputStream uzyskują dostęp do tych samych rzeczy, ale odczytują z nich dane.
Oto dobry podstawowy przykład użycia FileOutputStream i FileInputStream do zapisania danych do pliku, a następnie odczytania go ponownie.
źródło
Strumień Java to przepływ danych ze źródła do miejsca docelowego. Źródłem lub miejscem docelowym może być dysk, pamięć, gniazdo lub inne programy. Dane mogą być bajtami, znakami lub obiektami. To samo dotyczy strumieni C # lub C ++. Dobrą metaforą strumieni Java jest woda płynąca z kranu do wanny, a później do drenażu.
Dane reprezentują statyczną część strumienia; metody odczytu i zapisu stanowią część dynamiczną strumienia.
InputStream
reprezentuje przepływ danych ze źródła,OutputStream
reprezentuje przepływ danych do miejsca docelowego. Wreszcie,InputStream
iOutputStream
to abstrakcje ponad dostępu niskiego poziomu do danych, takich jak C wskaźniki plików.źródło
Strumień : W kategoriach laików strumień to dane, najbardziej ogólny strumień to binarna reprezentacja danych.
Strumień wejściowy : jeśli czytasz dane z pliku lub innego źródła, używany strumień to strumień wejściowy. Mówiąc prościej, strumień wejściowy działa jak kanał do odczytu danych.
Strumień wyjściowy : Jeśli chcesz czytać i przetwarzać dane ze źródła (pliku itp.), Musisz najpierw zapisać dane, środkiem do przechowywania danych jest strumień wyjściowy.
źródło
Strumień wyjściowy jest ogólnie związany z miejscem docelowym danych, takim jak plik lub sieć itp. W strumieniu wyjściowym Java jest miejsce docelowe, w którym dane są ostatecznie zapisywane i kończą
źródło