mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-12-18 19:41:01 +01:00
android: Add internal option to disable compression for zip exports
Disables compression for user data and save exports
This commit is contained in:
parent
148ad0cf0b
commit
dace726d08
3 changed files with 15 additions and 3 deletions
|
@ -445,7 +445,8 @@ class GamePropertiesFragment : Fragment() {
|
|||
val zipResult = FileUtil.zipFromInternalStorage(
|
||||
File(saveLocation),
|
||||
saveLocation.replaceAfterLast("/", ""),
|
||||
BufferedOutputStream(requireContext().contentResolver.openOutputStream(result))
|
||||
BufferedOutputStream(requireContext().contentResolver.openOutputStream(result)),
|
||||
compression = false
|
||||
)
|
||||
return@newInstance when (zipResult) {
|
||||
TaskState.Completed -> getString(R.string.export_success)
|
||||
|
|
|
@ -625,7 +625,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
|||
File(DirectoryInitialization.userDirectory!!),
|
||||
DirectoryInitialization.userDirectory!!,
|
||||
BufferedOutputStream(contentResolver.openOutputStream(result)),
|
||||
taskViewModel.cancelled
|
||||
taskViewModel.cancelled,
|
||||
compression = false
|
||||
)
|
||||
return@newInstance when (zipResult) {
|
||||
TaskState.Completed -> getString(R.string.user_data_export_success)
|
||||
|
|
|
@ -21,6 +21,7 @@ import org.yuzu.yuzu_emu.model.TaskState
|
|||
import java.io.BufferedOutputStream
|
||||
import java.lang.NullPointerException
|
||||
import java.nio.charset.StandardCharsets
|
||||
import java.util.zip.Deflater
|
||||
import java.util.zip.ZipOutputStream
|
||||
import kotlin.IllegalStateException
|
||||
|
||||
|
@ -312,15 +313,23 @@ object FileUtil {
|
|||
* @param inputFile File representation of the item that will be zipped
|
||||
* @param rootDir Directory containing the inputFile
|
||||
* @param outputStream Stream where the zip file will be output
|
||||
* @param cancelled [StateFlow] that reports whether this process has been cancelled
|
||||
* @param compression Disables compression if true
|
||||
*/
|
||||
fun zipFromInternalStorage(
|
||||
inputFile: File,
|
||||
rootDir: String,
|
||||
outputStream: BufferedOutputStream,
|
||||
cancelled: StateFlow<Boolean>? = null
|
||||
cancelled: StateFlow<Boolean>? = null,
|
||||
compression: Boolean = true
|
||||
): TaskState {
|
||||
try {
|
||||
ZipOutputStream(outputStream).use { zos ->
|
||||
if (!compression) {
|
||||
zos.setMethod(ZipOutputStream.DEFLATED)
|
||||
zos.setLevel(Deflater.NO_COMPRESSION)
|
||||
}
|
||||
|
||||
inputFile.walkTopDown().forEach { file ->
|
||||
if (cancelled?.value == true) {
|
||||
return TaskState.Cancelled
|
||||
|
@ -338,6 +347,7 @@ object FileUtil {
|
|||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.error("[FileUtil] Failed creating zip file - ${e.message}")
|
||||
return TaskState.Failed
|
||||
}
|
||||
return TaskState.Completed
|
||||
|
|
Loading…
Reference in a new issue