diff options
3 files changed, 15 insertions, 3 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt index b1d3c0040..b04d1208f 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/GamePropertiesFragment.kt | |||
| @@ -445,7 +445,8 @@ class GamePropertiesFragment : Fragment() { | |||
| 445 | val zipResult = FileUtil.zipFromInternalStorage( | 445 | val zipResult = FileUtil.zipFromInternalStorage( |
| 446 | File(saveLocation), | 446 | File(saveLocation), |
| 447 | saveLocation.replaceAfterLast("/", ""), | 447 | saveLocation.replaceAfterLast("/", ""), |
| 448 | BufferedOutputStream(requireContext().contentResolver.openOutputStream(result)) | 448 | BufferedOutputStream(requireContext().contentResolver.openOutputStream(result)), |
| 449 | compression = false | ||
| 449 | ) | 450 | ) |
| 450 | return@newInstance when (zipResult) { | 451 | return@newInstance when (zipResult) { |
| 451 | TaskState.Completed -> getString(R.string.export_success) | 452 | TaskState.Completed -> getString(R.string.export_success) |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt index b4117d761..622ae996e 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.kt | |||
| @@ -625,7 +625,8 @@ class MainActivity : AppCompatActivity(), ThemeProvider { | |||
| 625 | File(DirectoryInitialization.userDirectory!!), | 625 | File(DirectoryInitialization.userDirectory!!), |
| 626 | DirectoryInitialization.userDirectory!!, | 626 | DirectoryInitialization.userDirectory!!, |
| 627 | BufferedOutputStream(contentResolver.openOutputStream(result)), | 627 | BufferedOutputStream(contentResolver.openOutputStream(result)), |
| 628 | taskViewModel.cancelled | 628 | taskViewModel.cancelled, |
| 629 | compression = false | ||
| 629 | ) | 630 | ) |
| 630 | return@newInstance when (zipResult) { | 631 | return@newInstance when (zipResult) { |
| 631 | TaskState.Completed -> getString(R.string.user_data_export_success) | 632 | TaskState.Completed -> getString(R.string.user_data_export_success) |
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.kt index 00c6bf90e..132f002fb 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.kt | |||
| @@ -21,6 +21,7 @@ import org.yuzu.yuzu_emu.model.TaskState | |||
| 21 | import java.io.BufferedOutputStream | 21 | import java.io.BufferedOutputStream |
| 22 | import java.lang.NullPointerException | 22 | import java.lang.NullPointerException |
| 23 | import java.nio.charset.StandardCharsets | 23 | import java.nio.charset.StandardCharsets |
| 24 | import java.util.zip.Deflater | ||
| 24 | import java.util.zip.ZipOutputStream | 25 | import java.util.zip.ZipOutputStream |
| 25 | import kotlin.IllegalStateException | 26 | import kotlin.IllegalStateException |
| 26 | 27 | ||
| @@ -312,15 +313,23 @@ object FileUtil { | |||
| 312 | * @param inputFile File representation of the item that will be zipped | 313 | * @param inputFile File representation of the item that will be zipped |
| 313 | * @param rootDir Directory containing the inputFile | 314 | * @param rootDir Directory containing the inputFile |
| 314 | * @param outputStream Stream where the zip file will be output | 315 | * @param outputStream Stream where the zip file will be output |
| 316 | * @param cancelled [StateFlow] that reports whether this process has been cancelled | ||
| 317 | * @param compression Disables compression if true | ||
| 315 | */ | 318 | */ |
| 316 | fun zipFromInternalStorage( | 319 | fun zipFromInternalStorage( |
| 317 | inputFile: File, | 320 | inputFile: File, |
| 318 | rootDir: String, | 321 | rootDir: String, |
| 319 | outputStream: BufferedOutputStream, | 322 | outputStream: BufferedOutputStream, |
| 320 | cancelled: StateFlow<Boolean>? = null | 323 | cancelled: StateFlow<Boolean>? = null, |
| 324 | compression: Boolean = true | ||
| 321 | ): TaskState { | 325 | ): TaskState { |
| 322 | try { | 326 | try { |
| 323 | ZipOutputStream(outputStream).use { zos -> | 327 | ZipOutputStream(outputStream).use { zos -> |
| 328 | if (!compression) { | ||
| 329 | zos.setMethod(ZipOutputStream.DEFLATED) | ||
| 330 | zos.setLevel(Deflater.NO_COMPRESSION) | ||
| 331 | } | ||
| 332 | |||
| 324 | inputFile.walkTopDown().forEach { file -> | 333 | inputFile.walkTopDown().forEach { file -> |
| 325 | if (cancelled?.value == true) { | 334 | if (cancelled?.value == true) { |
| 326 | return TaskState.Cancelled | 335 | return TaskState.Cancelled |
| @@ -338,6 +347,7 @@ object FileUtil { | |||
| 338 | } | 347 | } |
| 339 | } | 348 | } |
| 340 | } catch (e: Exception) { | 349 | } catch (e: Exception) { |
| 350 | Log.error("[FileUtil] Failed creating zip file - ${e.message}") | ||
| 341 | return TaskState.Failed | 351 | return TaskState.Failed |
| 342 | } | 352 | } |
| 343 | return TaskState.Completed | 353 | return TaskState.Completed |