diff --git a/src/main/kotlin/cn/tursom/core/buffer/ByteBuffer.kt b/src/main/kotlin/cn/tursom/core/buffer/ByteBuffer.kt index 9c51a1a..11ba9ff 100644 --- a/src/main/kotlin/cn/tursom/core/buffer/ByteBuffer.kt +++ b/src/main/kotlin/cn/tursom/core/buffer/ByteBuffer.kt @@ -2,6 +2,7 @@ package cn.tursom.core.buffer import cn.tursom.core.forEachIndex import java.io.Closeable +import java.io.InputStream import java.io.OutputStream import kotlin.math.min @@ -198,6 +199,17 @@ interface ByteBuffer : Closeable { array.forEachIndex(index, index + size - 1, this::put) } + fun put(inputStream: InputStream) { + if (hasArray) { + val read = inputStream.read(array, writeOffset, writeable) + writePosition += read + } else { + val buffer = ByteArray(10 * 1024) + val read = inputStream.read(buffer) + put(buffer, 0, read) + } + } + fun putByte(byte: Byte): Unit = put(byte) fun putChar(char: Char): Unit = put(char) fun putShort(short: Short): Unit = put(short)