> > > me se nejak nelibi ten cyklus, vetsinou ho pisu takhle:
> > > -----------------------------
> > > while( ( bytesRead = in.read(buffer) ) > 0 ){
> >
> > ^-- Postfixny cyklus je pouzity preto, lebo v kazdej iteracii
> > potrebujem naalokovat novy buffer.
> Zajimalo by me proc potrebujete alokovat pokazde novy buffer. Doposud
> jsem pri cteni z InputStreamu vzdy cetl do stejneho bufferu a nemel
> jsem problem
^-- To je velmi jednoduche: lebo tie udaje potrebujem. :-)
Presnejsie: citam zo siete stream, konkretne odpoved HTTP servera,
ak by na tom zalezalo. Tato odpoved moze mat niekolko desiatok bajtov,
ale kludne moze mat 10MB. Takze nemozem dopredu vediet, aky velky
buffer bude dostatocny na nacitanie udajov. Preto citam udaje po castiach
s velkostou CHUNK a tieto casti si odkladam (kazdu ulozim do BasicContent,
a tieto objekty skladam do AggregatedContent); citanie ukoncim, ak sa
nacita prvy "neplny" buffer.
Problem je, ze prvy "neplny" buffer sa nacita skor, ako by sa doslo na koniec
streamu, a tato situacia je tym pravdepodobnejsia, cim je spojenie so serverom
pomalsie alebo generovanie tohto obsahu trva dlhsie. Nedojde vsak k predcasnemu
uzatvoreniu ci vypadku spojenia, co by -- dufam -- bolo signalizovane vynimkou.
> > 3.B) Nacitalo sa menej ako CHUNK bajtov; patrne sa docitalo do konca
> > streamu a teda dalej citat nemusim.
>
> Obavam se ze zde je chyba - v javadocu jsem nenasel zminku ze musi
> nacist presne tolik byte jako je delka bufferu, je tam zminka ze nacte
> alespon 1 byte.
> Je to sice na prvni pohled nelogicke (proc by to delal?), ale asi to
> muze zpusobovat vas problem.
^-- Ako konkretne to ma sposobovat moj problem? Stale nerozumiem.
J.