Я пытаюсь преобразовать входные потоки в файл. Поэтому, когда пользователь выбирает 1 изображение, все работает хорошо. Но когда пользователь выбирает несколько изображений, например 4, приведенный ниже код не работает должным образом; Я вижу только 2 пути к файлам в журнале оператора.
compositeDisposable.add(Observable.fromIterable(inputStreamList)
.map {
FileUtils.saveInputStreamToFile(it, directory, 500)
}.toList()
.toObservable()
.subscribeOn(schedulerProvider.io())
.subscribe({
it.forEach {file->
Log.d("TAG", "Path ${file.path}")
}
Log.d("TAG", "Size ${it.size}")
}, {
})
)
Вот метод saveInputStreamToFile
fun saveInputStreamToFile(input: InputStream, directory: File, height: Int): File? {
val currentTime = dateFormat.format(Date())
val imageName = "_$currentTime"
val temp = File(directory.path + File.separator + "flab\$file\$for\$processing")
try {
val final = File(directory.path + File.separator + imageName + ".$IMAGE_JPG")
val output = FileOutputStream(temp)
try {
val buffer = ByteArray(4 * 1024) // or other buffer size
var read: Int = input.read(buffer)
while (read != -1) {
output.write(buffer, 0, read)
read = input.read(buffer)
}
output.flush()
saveBitmap(decodeFile(temp, height)!!, final.path, IMAGE_JPG, 80)
return final
} finally {
output.close()
temp.delete()
}
} finally {
input.close()
}
}
Я хочу, чтобы следующий входной поток был взят только после преобразования текущего входного потока в файл. Как этого добиться? Пожалуйста, помогите