2011-07-08 9 views
6

¿Puedo escribir cualquier InputStream en un FileChannel?Usando FileChannel para escribir cualquier InputStream?

Estoy usando java.nio.channels.FileChannel para abrir un archivo y bloquearlo, y luego escribir un InputStream en el archivo de salida. El InputStream puede abrirse con otro archivo, URL, socket o cualquier otra cosa. He escribo los siguientes códigos:

FileOutputStream outputStream = new FileOutputStream(outputFile); 
FileChannel outputChannel = outputStream.getChannel(); 
FileLock lock = outputChannel.lock(); 
try { 
    outputChannel.transferFrom(???); 
} finally { 
    lock.release(); 
    outputChannel.close(); 
    outputStream.close(); 
} 

Sin embargo, el primer argumento de outputChannel.transferFrom (...) solicita un objeto ReadableByteChannel. Como utilizo un InputStream como entrada, no tengo el método inputStream.getChannel() para crear el canal requerido.

¿Hay alguna forma de obtener un ReadableByteChannel de un InputStream?

Respuesta

5

Puede utilizar ReadableByteChannel readableChannel = Channels.newChannel (myinputstream).

Cuestiones relacionadas