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.
0
1
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.
1
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
0
Fakt klasy abstrakcyjne, a ja takie durnowate pytanie zadaje...
Dziekuje za odpowiedzi.