From 683d81eae440b53fbbd4ce57bccad1fb24124dd8 Mon Sep 17 00:00:00 2001 From: wilinz Date: Wed, 17 Aug 2022 22:01:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E2=80=9C=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E9=A1=B9=E7=9B=AE=E2=80=9D=20=E4=B8=8E=20=E2=80=9C?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E9=A1=B9=E7=9B=AE=E2=80=9D=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/build.gradle | 4 +- common/src/main/java/com/stardust/io/Zip.java | 48 ------------------- common/src/main/java/com/stardust/io/Zip.kt | 34 +++++++++++++ 3 files changed, 36 insertions(+), 50 deletions(-) delete mode 100644 common/src/main/java/com/stardust/io/Zip.java create mode 100644 common/src/main/java/com/stardust/io/Zip.kt diff --git a/common/build.gradle b/common/build.gradle index ab7c90177..83c183a60 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -36,8 +36,8 @@ dependencies { exclude group: 'com.android.support', module: 'support-annotations' }) testImplementation 'junit:junit:4.13.2' - api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +// api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" api 'androidx.annotation:annotation:1.4.0' api 'com.github.hyb1996:settingscompat:1.1.5' - implementation "androidx.activity:activity-ktx:1.5.0" + implementation "androidx.activity:activity-ktx:1.5.1" } diff --git a/common/src/main/java/com/stardust/io/Zip.java b/common/src/main/java/com/stardust/io/Zip.java deleted file mode 100644 index 8a4b8231f..000000000 --- a/common/src/main/java/com/stardust/io/Zip.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.stardust.io; - -import com.stardust.pio.PFiles; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import static com.stardust.pio.PFiles.closeSilently; - -public class Zip { - - public static void unzip(InputStream stream, File dir) throws IOException { - FileOutputStream fos = null; - ZipInputStream zis = null; - try { - zis = new ZipInputStream(stream); - ZipEntry entry; - while ((entry = zis.getNextEntry()) != null) { - File file = new File(dir, entry.getName()); - if (entry.isDirectory()) { - file.mkdirs(); - } else { - PFiles.ensureDir(file.getPath()); - fos = new FileOutputStream(file); - PFiles.write(zis, fos, false); - fos.close(); - fos = null; - zis.closeEntry(); - } - } - } finally { - closeSilently(fos); - closeSilently(stream); - closeSilently(zis); - } - } - - public static void unzip(File zipFile, File dir) throws IOException { - unzip(new FileInputStream(zipFile), dir); - } - - -} diff --git a/common/src/main/java/com/stardust/io/Zip.kt b/common/src/main/java/com/stardust/io/Zip.kt new file mode 100644 index 000000000..134527f03 --- /dev/null +++ b/common/src/main/java/com/stardust/io/Zip.kt @@ -0,0 +1,34 @@ +package com.stardust.io + +import java.io.File +import java.io.FileInputStream +import java.io.InputStream +import java.util.zip.ZipEntry +import java.util.zip.ZipInputStream + +object Zip { + + @JvmStatic + fun unzip(stream: InputStream, dir: File) { + ZipInputStream(stream).use { zis -> + var entry: ZipEntry + while (zis.nextEntry.also { entry = it } != null) { + val file = File(dir, entry.name) + if (entry.isDirectory) { + file.mkdirs() + } else { + file.parentFile?.let { if (!it.exists()) it.mkdirs() } + file.outputStream().use { fos -> + zis.copyTo(fos) + zis.closeEntry() + } + } + } + } + } + + @JvmStatic + fun unzip(zipFile: File, dir: File) { + unzip(FileInputStream(zipFile), dir) + } +} \ No newline at end of file