Twidere-App-Android-Twitter.../twidere/src/main/kotlin/org/mariotaku/ktextension/StreamExtensions.kt

44 lines
1.2 KiB
Kotlin

package org.mariotaku.ktextension
import java.io.InputStream
import java.io.OutputStream
import java.nio.charset.Charset
import java.util.*
/**
* Created by mariotaku on 2016/12/7.
*/
fun InputStream.toString(charset: Charset, close: Boolean = false): String {
val r = bufferedReader(charset)
if (close) return r.use { it.readText() }
return r.readText()
}
fun OutputStream.writeLine(string: String = "", charset: Charset = Charset.defaultCharset(),
crlf: Boolean = false) {
write(string.toByteArray(charset))
if (crlf) {
write("\r\n".toByteArray(charset))
} else {
write("\n".toByteArray(charset))
}
}
fun InputStream.expectLine(string: String = "", charset: Charset = Charset.defaultCharset(),
crlf: Boolean = false): Boolean {
if (!expectBytes(string.toByteArray(charset))) return false
if (crlf) {
if (!expectBytes("\r\n".toByteArray(charset))) return false
} else {
if (!expectBytes("\n".toByteArray(charset))) return false
}
return true
}
fun InputStream.expectBytes(bytes: ByteArray): Boolean {
val readBytes = ByteArray(bytes.size)
read(readBytes)
return readBytes.contentEquals(bytes)
}