Dobór strumieni java.io do różnych scenariuszy

0

Witajcie! :)
Uczę się ostatnio obsługi plików i strumieni java.io i zastanawia mnie jedno:
jak umiejętnie dobrać odpowiedni strumień do danego scenariusza?

Czytam sobie o pierdyliardzie klas do obsługi podobnych danych... i mam coraz większy mętlik.
Okej, mamy podział na strumienie bajtowe i znakowe - to jest jeszcze w miarę logiczne.
Ale na Oracla nie jest to zbyt przystępnie opisane. Chodzi tutaj o doświadczenie? Mam wrażenie, że wybiorę dowolny i jeśli będę miał trochę szczęścia to i tak do moich celów wystarczy.

Na przykład: do zapisu prostych danych w pliku mogę wykorzystać (uprzednio używając klasy File):

  • FileOutputStream
  • ByteArrayOutputStream
  • FileWriter
  • CharArrayWriter

Dodatkowo mogę je opakować strumieniami buforowanymi. Jak się w tym odnaleźć?
Wiem, że to trochę newbie pytanie, trochę lame, ale ciągle zastanawia mnie to, jak wy dobieracie strumienie?
Macie na to jakieś sprawdzone metody? Pytania pomocne, które sobie zadajecie przed pisaniem kodu?

0

Link, który podałeś IMO dość dobrze tłumaczy jak działają strumienie, wystarczy przeczytać całą sekcję https://docs.oracle.com/javase/tutorial/essential/io/streams.html

jak wy dobieracie strumienie

Wystarczy sięgnąć do dokumentacji albo po prostu popatrzeć po nazwie i próbować skojarzyć. Jeżeli nie wiesz jakie są to dobrze będzie przejrzeć je wszystkie albo poszukać na stacku/tutaj, np. jakie różnice są miedzy klasami FileWriter, a PrintWriter
FileOutputStream - jeżeli będziesz chciał zapisać plik
FileWriter - do zapisu plików tekstowych
CharArrayWriter - do zapisu tablicy znaków/łańcuchów
ByteArrayOutputStream - do zapisu tablicy bajtów

Słówko o wydajności tutaj: http://mechanical-sympathy.blogspot.com/2011/12/java-sequential-io-performance.html

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.