Witajcie, ucze sie Javy i aktualnie jestem w temacie binarny zapis i odczyt z plikow. I tam korzysta sie ze strumieni FileInputStream i FileOutputStream lub opakowuje sie te powyzsze strumienie w DataInputStream lub DataOutputStream (pozwalaja one operowac nie tylko na bajtach, ale i na typach danych). I jest w lekcji wspomniane, ze InputStream i OutputStream nie bedzie uzywane w dalszej lekcji tylko strumienie, ktore pozwalaja operowac na plikach np. FileInputStream. W takim razie klasy InputStream i OutputStrem jakie maja bezposrednie uzycie? I pytanie brzmi czy mozna bezposrednio uzywac Input/Outputstream, jezeli tak to w jakich przypadkach? Monzna np. policzyc ilosc bajtow tablicy lub zmiennej np String/int tymi klasami? Czy jedyne one sluza do rozszerzania innych klas tj. FileOutputstream itd.?. Dzieki za odpowiedz.
InputStream stanowi ogólny interfejs dla strumieni. FileInputStream jest jego implementacją dla plików. Inne przykłady strumieni to np. strumień pakietów sieciowych w Socket, albo strumień znaków w buforze tekstowym.
Java InputStream i OutpusStream to klasy abstrakcyjne, a to opakowanie to zastosowanie wzorca projektowego decorator ;)
Na przykład chcesz zapisać obiekt do pliku.
FileOutputStream fileOutputStream = new FileOutputStream(path);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
fieOutputStream zapisze przekazane dane do pliku a objectOutputStream zserializuje obiekt. Mógłbyś tez przekazać np. ByteArrayOutputStream do ObjectOutputStreama i wtedy zserializowałbyś do byte[] .
http://stackoverflow.com/questions/6366385/decorator-pattern-for-io
Fakt klasy abstrakcyjne, a ja takie durnowate pytanie zadaje...
Dziekuje za odpowiedzi.
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.