修复 Shell的内存泄漏问题
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user