forked from suyu/suyu
android: Use smaller read buffer size for exporting user data
The File.readBytes() extension attempts to load an entire file into a byte array. This would cause crashes when loading huge files into memory.
This commit is contained in:
parent
33e2dce715
commit
5269a46399
1 changed files with 10 additions and 1 deletions
|
@ -50,6 +50,7 @@ import org.yuzu.yuzu_emu.model.TaskViewModel
|
||||||
import org.yuzu.yuzu_emu.utils.*
|
import org.yuzu.yuzu_emu.utils.*
|
||||||
import java.io.BufferedInputStream
|
import java.io.BufferedInputStream
|
||||||
import java.io.BufferedOutputStream
|
import java.io.BufferedOutputStream
|
||||||
|
import java.io.FileInputStream
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
import java.util.zip.ZipEntry
|
import java.util.zip.ZipEntry
|
||||||
import java.util.zip.ZipInputStream
|
import java.util.zip.ZipInputStream
|
||||||
|
@ -639,7 +640,15 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||||
file.path.length
|
file.path.length
|
||||||
)
|
)
|
||||||
stream.putNextEntry(ZipEntry(newPath))
|
stream.putNextEntry(ZipEntry(newPath))
|
||||||
stream.write(file.readBytes())
|
|
||||||
|
val buffer = ByteArray(8096)
|
||||||
|
var read: Int
|
||||||
|
FileInputStream(file).use { fis ->
|
||||||
|
while (fis.read(buffer).also { read = it } != -1) {
|
||||||
|
stream.write(buffer, 0, read)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
stream.closeEntry()
|
stream.closeEntry()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue