La risposta alla domanda "Sbaglio?" è "sì"... BufferedReader è un aggeggo che serve a leggere stream di "caratteri". Quello che devi fare tu è leggere stream di byte (quindi, byte secchi, senza alcuna interpretazione di caratteri, che potrebbe falsare la lettura).
Quello che intendeva dire Alex è che non ha molto senso leggere (e scrivere) un byte alla volta... conviene usare un array di byte (di una certa dimensione, generalmente multipli di 1024) in modo da "velocizzare" la lettura.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ho notato: mi corrompe i file XD sto consultando la documentazione per trovare la soluzione. In base a cosa decido la dimensione del buffer?
EDIT: per il momento sto adottando la seguente:
dove in e out sono definiti nel codice originario. Non so che fare a quel ciclo for adessocodice:BufferedInputStream br = new BufferedInputStream(in); BufferedOutputStream bw = new BufferedOutputStream(out);
Ultima modifica di Squaloattacca; 28-07-2014 a 14:01
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Ok, per gli utenti scrivo come ho pensato di risolvere. Ora l'ultima parte appare così:
Sembra funzionare a meraviglia, e spero che il codice sia buonocodice:InputStream in = Zf.getInputStream(one); BufferedInputStream br = new BufferedInputStream(in); FileOutputStream out = new FileOutputStream(one.getName()); BufferedOutputStream bw = new BufferedOutputStream(out); byte [] ba = new byte [4 * 1024]; int bubi = -7; while ((bubi = br.read(ba))>0) { bw.write(ba, 0, bubi); } bw.flush(); bw.close(); br.close();![]()