chb0kotlin
12/22/2017, 5:58 PMclass CompositeReader(private var readers: List<Reader> = listOf()) : Reader() {
override fun close() = readers.forEach(Reader::close)
override fun read(cbuf: CharArray?, off: Int, len: Int): Int {
var result = -1
if (readers.isNotEmpty()) {
result = readers.first().read(cbuf, off, len)
if (result == -1) {
readers = readers.subList(1, readers.lastIndex)
if (readers.isNotEmpty()) {
result = readers.first().read(cbuf, off, len)
}
}
}
return result
}
fun copy(reader: Reader) = CompositeReader(readers = this.readers + reader)
}
Shawn
12/22/2017, 6:04 PM