diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/TitleUpdateViewModel.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/TitleUpdateViewModel.kt
index 502d9990c..d5ca09906 100644
--- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/TitleUpdateViewModel.kt
+++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/TitleUpdateViewModel.kt
@@ -4,8 +4,8 @@ import androidx.compose.runtime.snapshots.SnapshotStateList
 import androidx.compose.ui.text.intl.Locale
 import androidx.compose.ui.text.toLowerCase
 import com.anggrayudi.storage.SimpleStorageHelper
+import com.anggrayudi.storage.file.getAbsolutePath
 import com.google.gson.Gson
-import org.ryujinx.android.Helpers
 import org.ryujinx.android.MainActivity
 import java.io.File
 import kotlin.math.max
@@ -39,8 +39,8 @@ class TitleUpdateViewModel(val titleId: String) {
                 {
                     val file = files.firstOrNull()
                     file?.apply {
-                        val path = Helpers.getPath(storageHelper.storage.context, file.uri)
-                        if(!path.isNullOrEmpty()){
+                        val path = file.getAbsolutePath(storageHelper.storage.context)
+                        if(path.isNotEmpty()){
                             data?.apply {
                                 if(!paths.contains(path)) {
                                     paths.add(path)
diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/VulkanDriverViewModel.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/VulkanDriverViewModel.kt
index bddba00ce..bc0a58a43 100644
--- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/VulkanDriverViewModel.kt
+++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/viewmodels/VulkanDriverViewModel.kt
@@ -2,10 +2,12 @@ package org.ryujinx.android.viewmodels
 
 import androidx.compose.runtime.MutableState
 import com.anggrayudi.storage.file.extension
+import com.anggrayudi.storage.file.getAbsolutePath
 import com.google.gson.Gson
-import org.ryujinx.android.Helpers
 import org.ryujinx.android.MainActivity
+import java.io.BufferedOutputStream
 import java.io.File
+import java.io.FileOutputStream
 import java.util.zip.ZipFile
 
 class VulkanDriverViewModel(val activity: MainActivity) {
@@ -55,7 +57,7 @@ class VulkanDriverViewModel(val activity: MainActivity) {
         val gson = Gson()
 
         for (folder in folders){
-            if(folder.isDirectory() && folder.parent == driverFolder.absolutePath){
+            if(folder.isDirectory && folder.parent == driverFolder.absolutePath){
                 val meta = File(folder.absolutePath + "/meta.json")
 
                 if(meta.exists()){
@@ -104,23 +106,28 @@ class VulkanDriverViewModel(val activity: MainActivity) {
                     {
                         val file = files.firstOrNull()
                         file?.apply {
-                            val path = Helpers.getPath(storage.context, file.uri)
-                            if(!path.isNullOrEmpty()){
+                            val path = file.getAbsolutePath(storage.context)
+                            if (path.isNotEmpty()){
                                 val name = file.name?.removeSuffix("." + file.extension) ?: ""
                                 val driverFolder = ensureDriverPath()
                                 val extractionFolder = File(driverFolder.absolutePath + "/${name}")
+                                extractionFolder.deleteRecursively()
                                 extractionFolder.mkdirs()
-                                ZipFile(path)?.use { zip ->
+                                ZipFile(path).use { zip ->
                                     zip.entries().asSequence().forEach { entry ->
 
                                         zip.getInputStream(entry).use { input ->
                                             val filePath = extractionFolder.absolutePath + File.separator + entry.name
 
                                             if (!entry.isDirectory) {
-                                                val length = input.available()
-                                                val bytesIn = ByteArray(length)
-                                                input.read(bytesIn)
-                                                File(filePath).writeBytes(bytesIn)
+                                                File(filePath).delete()
+                                                val bos = BufferedOutputStream(FileOutputStream(filePath))
+                                                val bytesIn = ByteArray(4096)
+                                                var read: Int
+                                                while (input.read(bytesIn).also { read = it } != -1) {
+                                                    bos.write(bytesIn, 0, read)
+                                                }
+                                                bos.close()
                                             } else {
                                                 val dir = File(filePath)
                                                 dir.mkdir()