2010-05-13 11 views

risposta

12

Se si sta già utilizzando Apache commons-io, è possibile farlo con:

IOUtils.copy(byteArrayInputStream, new FileOutputStream(outputFileName)); 
+0

Ya. Molto più pulito. – SingleShot

+0

Questo è ottimo, ma ho scoperto che avevo bisogno di creare il FileoutputStream al di fuori della chiamata da copiare in modo da poterlo chiudere. Alcuni IOUtils scaricano il buffer, ma stavo avendo questo problema che i file di output non erano talvolta apribili. Una volta che ho aggiunto una chiamata a close() su FileOutputStream, ha funzionato alla grande. Nel complesso, sono così felice che ho trovato la roba di IOUtils, l'ho usata anche per altre cose. – titania424

2

È possibile utilizzare il seguente codice:

ByteArrayInputStream input = getInputStream(); 
FileOutputStream output = new FileOutputStream(outputFilename); 

int DEFAULT_BUFFER_SIZE = 1024; 
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; 
long count = 0; 
int n = 0; 

n = input.read(buffer, 0, DEFAULT_BUFFER_SIZE); 

while (n >= 0) { 
    output.write(buffer, 0, n); 
    n = input.read(buffer, 0, DEFAULT_BUFFER_SIZE); 
} 
+0

Grazie Gaurav, proverò ora. – Ankur

5
InputStream in = //your ByteArrayInputStream here 
OutputStream out = new FileOutputStream("filename.jpg"); 

// Transfer bytes from in to out 
byte[] buf = new byte[1024]; 
int len; 
while ((len = in.read(buf)) > 0) { 
    out.write(buf, 0, len); 
} 
in.close(); 
out.close(); 
-3
ByteArrayInputStream stream = <<Assign stream>>; 
    byte[] bytes = new byte[1024]; 
    stream.read(bytes); 
    BufferedWriter writer = new BufferedWriter(new FileWriter(new File("FileLocation"))); 
    writer.write(new String(bytes)); 
    writer.close(); 

Writer Buffered migliorerà le prestazioni nella scrittura di file rispetto a FileWriter.

+1

I writer sono per i file di caratteri, non per i file binari –

Problemi correlati