[Java lista] nem ertem....

Laja laja at freemail.hu
2010. Május. 5., Sze, 15:51:04 CEST


Hi!

Van egy érdekes problémám, amit nem értek. A kód:

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
...

ByteArrayOutputStream  os=new ByteArrayOutputStream();
pdd.save(os); //mindegy mi ez, lényeg hogy adatokat ír bele.
os.close();
System.out.println("os="+os.toString()); //ez szépen kiírja az adatokat
String retstr=Base64.encode(os.toByteArray()).toString();
System.out.println("retstr=\""+retstr+"\""); //az eredmény: 
retstr="[C at 1855562"


Azt hoiszem érthető. Van egy output stream, amibe adatokat írok. Ha ezt 
kiiratom, látszik hogy szépen benne bvan az adat. Azután Base64 kódolom, 
és az eredmény egy 10 karaktgeres string (több ezer bájtnyi adat van). 
Miért nem működik ez?

Ha a kódot így módosítom:

ByteArrayOutputStream  os=new ByteArrayOutputStream();
pdd.save(os); //mindegy mi ez, lényeg hogy adatokat ír bele.
os.close();
System.out.println("os="+os.toString()); //ez szépen kiírja az adatokat
ByteArrayInputStream bis=new ByteArrayInputStream(os.toByteArray());
String retstr=Base64.encodeStream(bis).toString();
df.println("retstr=\""+retstr+"\"");

Ebben az esetben rendben meglesz minden adat.

A progiban mint látható, a sun féle Base64 kódolót használom.

Laja




További információk a(z) Javalist levelezőlistáról