diff --git a/src/main/scala/li/cil/oc/server/fs/Buffered.scala b/src/main/scala/li/cil/oc/server/fs/Buffered.scala index b7040227a..bafbc7201 100644 --- a/src/main/scala/li/cil/oc/server/fs/Buffered.scala +++ b/src/main/scala/li/cil/oc/server/fs/Buffered.scala @@ -2,6 +2,7 @@ package li.cil.oc.server.fs import java.io import java.io.FileNotFoundException +import java.nio.ByteBuffer import java.util.concurrent.CancellationException import java.util.concurrent.Future import java.util.concurrent.TimeUnit @@ -131,7 +132,19 @@ trait Buffered extends OutputStreamFileSystem { childFile.createNewFile() val out = new io.FileOutputStream(childFile).getChannel val in = openInputChannel(childPath).get - out.transferFrom(in, 0, Long.MaxValue) + + val buffer = ByteBuffer.allocateDirect(16 * 1024) + while (in.read(buffer) != -1) { + buffer.flip() + out.write(buffer) + buffer.compact() + } + + buffer.flip() + while (buffer.hasRemaining) { + out.write(buffer) + } + out.close() in.close() childFile.setLastModified(time)