44 lines
1.2 KiB
Kotlin
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)
|
|
} |