修复 Shell的内存泄漏问题

This commit is contained in:
hyb1996
2019-01-21 14:09:59 +08:00
parent 5cf08a92bf
commit 91365c6ae2
3 changed files with 79 additions and 15 deletions

View File

@@ -0,0 +1,30 @@
package com.stardust.io
import java.io.IOException
import java.io.InputStream
import java.nio.ByteBuffer
class ByteBufferBackedInputStream(private var buf: ByteBuffer) : InputStream() {
@Throws(IOException::class)
override fun read(): Int {
return if (!buf.hasRemaining()) {
-1
} else buf.get().toInt() and 0xFF
}
@Throws(IOException::class)
override fun read(bytes: ByteArray, off: Int, len: Int): Int {
if (!buf.hasRemaining()) {
return -1
}
val read = Math.min(len, available())
buf.get(bytes, off, read)
buf.position(buf.position() - read)
return read
}
override fun available(): Int {
return buf.position()
}
}

View File

@@ -0,0 +1,19 @@
package com.stardust.io
import java.io.IOException
import java.io.OutputStream
import java.nio.ByteBuffer
class ByteBufferBackedOutputStream(private var buf: ByteBuffer) : OutputStream() {
@Throws(IOException::class)
override fun write(b: Int) {
buf.put(b.toByte())
}
@Throws(IOException::class)
override fun write(bytes: ByteArray, off: Int, len: Int) {
buf.put(bytes, off, len)
}
}