【发布时间】:2018-07-09 12:02:13
【问题描述】:
我有大约一百个 .jpg 文件,我将它作为 .zip 上传到这个 link,然后我尝试下载它并在我的应用程序中解压缩它,所以下载没有问题,但我有错误显示在尝试使用下面的代码解压缩文件时的下图,
知道为什么会这样吗?
这是我已经尝试解决的问题
1-获取错误中提到的.jpg文件并将其重命名为zip文件(同样的错误) 2-获取错误中提到的 .jpg 文件并将其删除(现在同样的错误发生在 zip 中的下一个 .jpg 文件中) 3-更改目录(同样的错误) 4-更改zip中的每个文件名(同样的错误) 5-尝试多次解压缩它解压缩一个空文件夹 6-尝试在计算机中解压缩(没问题,一切正常) 7-尝试从另一个链接解压缩另一个文件(没有错误一切正常) 8-更改每个文件名并将其上传到不同的链接后重新压缩计算机中的文件夹(同样的问题)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_questions1)
val foldername = "LQuestions"
val zipFolder = File(Environment.getExternalStorageDirectory(), "السادس.اعدادي/$foldername.zip")
try{
zipFolder.unzip()}
catch(e:Exception){
Toast.makeText(applicationContext,e.toString(), Toast.LENGTH_LONG).show()
}
}
fun File.unzip(root: File? = null): Boolean {
val rootFolder = root
?: File(parentFile.absolutePath + File.separator + nameWithoutExtension)
if (!rootFolder.exists()) {
rootFolder.mkdirs()
}
data class ZipIO(val entry: ZipEntry, val output: File)
ZipFile(this).use { zip ->
zip
.entries()
.asSequence()
.map {
val outputFile = File(rootFolder.absolutePath + File.separator + it.name)
ZipIO(it, outputFile)
}
.filter { (entry, output) ->
!(entry.isDirectory && (output.exists() || output.mkdirs()))
}
.forEach { (entry, output) ->
zip.getInputStream(entry).use { input ->
output.outputStream().use { output ->
input.copyTo(output)
}
}
}
}
return true
}
【问题讨论】:
标签: android zip unzip filenotfoundexception