fun unZipFile(zipFile: String, targetFile: String) {
var outputStream: OutputStream? = null
var inputStream: InputStream? = null
try {
File(targetFile).run {
if (!exists()) {
mkdirs()
}
}
val zf = ZipFile(zipFile)
val entries = zf.entries()
while (entries.hasMoreElements()) {
val zipEntry: ZipEntry = entries.nextElement()
val zipEntryName = zipEntry.name
inputStream = zf.getInputStream(zipEntry)
if (zipEntryName.startsWith("__MACOSX")) {
continue
}
File(targetFile, zipEntryName).apply {
if (isDirectory) {
if (!exists()) {
mkdirs()
}
} else {
createNewFile()
writeStreamToFile(inputStream, this)
}
}
inputStream?.close()
outputStream?.close()
}
File(zipFile).delete()
} finally {
inputStream?.close()
outputStream?.close()
}
}
private fun writeStreamToFile(stream: InputStream, file: File) {
try {
val fos = FileOutputStream(file)
val buffer = ByteArray(1024)
var len: Int
var total = 0
while ((stream.read(buffer).also { len = it }) != -1) {
fos.write(buffer, 0, len)
total += len
}
fos.flush()
fos.close()
stream.close()
} catch (e1: Exception) {
e1.printStackTrace()
}
}
fun getMapRootPath(context: Context): String {
return if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
context.filesDir.absolutePath + "filename"
} else {
context.getExternalFilesDir("filename")?.absolutePath
?: context.cacheDir.absolutePath
}
}
Kotlin 解压缩
最新推荐文章于 2024-06-26 17:46:19 发布