Ciekawski
Ciekawski
Nie zrazaj sie! Strumienie wbrew pozorom sa na prawde logiczne i jesli zrozumiesz logike ich dzialania, sam stwierdzisz, ze nie moznabylo zrobic tego lepiej!
po pierwsze musisz wiedziec, ze zasada ich dzialania opiera sie na wzorcu projektowym Decorator. Polega on na tym, ze zamiast tworzyc klasy KlasaCzytajacaZPlikuBinarnie, KlasaCzytajacaZPlikuText, KlasaCzytajacaZSocketa itp wystarczy stworzyc klase bazowa np FileInputStream, mySocket.getInputStream() a potem opakowac ja nowymi mozliwosciami! to tak jak w automacie wybierasz kawe, potem wybierasz mala czy duza a nastepnie ze smietanka czy bez! czy nie jest to logiczne?
chcesz czytac z fliku - nie ma problemy - new FileInputStream("plik"); a chcialbys odczytac caly obiekt? juz ie robi - new ObjectInputStream(new FileInputStream("plik")); a moze chcialbys przeczytac tekst metoda readline? Masz taka mozliwosc po opakowaniu swojego strumienia klasa BufferedReader (ktora moze opakowac InputSreamReder ktora z kolei mozna nalozyc na FileInputSream) - proste ;)
pozdrawiam
Ciekawski
eximius napisał(a)
Nie zrazaj sie! Strumienie wbrew pozorom sa na prawde logiczne i jesli zrozumiesz logike ich dzialania, sam stwierdzisz, ze nie moznabylo zrobic tego lepiej!
po pierwsze musisz wiedziec, ze zasada ich dzialania opiera sie na wzorcu projektowym Decorator. Polega on na tym, ze zamiast tworzyc klasy KlasaCzytajacaZPlikuBinarnie, KlasaCzytajacaZPlikuText, KlasaCzytajacaZSocketa itp wystarczy stworzyc klase bazowa np FileInputStream, mySocket.getInputStream() a potem opakowac ja nowymi mozliwosciami! to tak jak w automacie wybierasz kawe, potem wybierasz mala czy duza a nastepnie ze smietanka czy bez! czy nie jest to logiczne?
chcesz czytac z fliku - nie ma problemy - new FileInputStream("plik"); a chcialbys odczytac caly obiekt? juz ie robi - new ObjectInputStream(new FileInputStream("plik")); a moze chcialbys przeczytac tekst metoda readline? Masz taka mozliwosc po opakowaniu swojego strumienia klasa BufferedReader (ktora moze opakowac InputSreamReder ktora z kolei mozna nalozyc na FileInputSream) - proste ;)pozdrawiam
Ale ja to wszystko wiem! Do obsługi znaków Unicode są klasy bazowe Printer i Writer a bajtów klasy Input i Output. Potem to się rozwija na typy proste, łańcuchy, pliki, buforowanie różnych żródeł danych i w końcu serializację obiektów dodatkowo tworząc śmieszne wielkorotnie filtrowanie konstruktorów.
Ale na to potrzeba coś ponad 70 klas z bibliotek java.io. i java.nio. i do tego znalazłem w ich strukturach trochę niekonsekwencji będacych spadkiem z poprzednich wersji JDK!
Przecież to jest horror[!!!]