Stepan Roh wrote: > Spatne pouzivate metodu available(). Ta vraci pocet bytu, ktere lze > precist aniz by se volajici zablokoval. V tomto pripade je to zrejme > velikost interniho bufferu onoho proudu. S poctem bytu, ktere se daji > z proudu precist tato hodnota nema nic spolecneho. Data je treba cist > tak dlouho nez metoda read() vrati -1. > > S pozdravem, > > Stepan Roh
Díky za odpověď. Zarazilo mě pouze to, že pokud použiju FileInputStream nebo ByteArrayInputStream, tak mi metoda available vrátí stejnou hodnotu jako metoda read. --- Jde o to, že stejně potřebuji načíst celou přílohu do paměti. Musím tedy vytvořit dvě pole. První o velikosti vrácené metodou available() a druhé o velikosti vrácené metodou read()? Přijde mi to hrozné mrhání pamětí :-(. InputStream is = (InputStream)o; byte data[]=new byte[is.available()]; int len=is.read(data); byte finalData[]=new byte[len]; System.arraycopy(data,0,finalData,0,len); Napadá vás jednodušší a lepší řešení? Díky Fafi
