EtchDroid/app/src/main/java/eu/depau/etchdroid/worker/impl/Input2OutputStreamCopyAsync...

30 lines
799 B
Kotlin

package eu.depau.etchdroid.worker.impl
import eu.depau.etchdroid.worker.abstractimpl.AbstractAutoProgressAsyncWorker
import eu.depau.etchdroid.worker.dto.ProgressUpdateDTO
import java.io.InputStream
import java.io.OutputStream
open class Input2OutputStreamCopyAsyncWorker(
private val source: InputStream,
private val dest: OutputStream,
chunkSize: Int,
override val progressUpdateDTO: ProgressUpdateDTO,
size: Long
) : AbstractAutoProgressAsyncWorker(size) {
private val buffer = ByteArray(chunkSize)
override fun runStep(): Boolean {
val readBytes = source.read(buffer)
if (readBytes < 0)
return false
dest.write(buffer, 0, readBytes)
progressUpdate(readBytes.toLong())
return true
}
}