2011-07-08 32 views
6

Czy mogę napisać dowolny InputStream do FileChannel?Używanie FileChannel do zapisu dowolnego InputStream?

Używam java.nio.channels.FileChannel, aby otworzyć plik i zablokować go, a następnie zapisanie InputStream do pliku wyjściowego. InputStream może zostać otwarty przez inny plik, URL, gniazdo lub cokolwiek innego. Mam napisać następujące kody:

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

Jednak pierwszy argument outputChannel.transferFrom (...) zwraca obiekt ReadableByteChannel. Ponieważ używam InputStream jako wejścia, nie ma on metody inputStream.getChannel(), aby utworzyć wymagany kanał.

Czy istnieje sposób na uzyskanie ReadableByteChannel z InputStream?

Odpowiedz

5

Można użyć ReadableByteChannel readableChannel = Channels.newChannel (myinputstream).