解压时找不到文件错误
file not found error when unzipping
我有大约一百个 .jpg 文件,我将其作为 .zip 上传到此 link 然后我尝试下载它并在我的应用程序中解压缩,所以下载没问题,但我有尝试使用下面的代码解压缩文件时出现下图所示的错误,
知道为什么会这样吗?
这是我已经尝试解决的问题
1-获取错误中提到的.jpg文件并将其重命名为zip文件(同样的错误)
2-获取错误中提到的 .jpg 文件并将其删除(现在 zip 中的下一个 .jpg 文件发生了同样的错误)
3-更改目录(同样的错误)
4- 更改 zip 中的每个文件名(同样的错误)
5- 尝试多次解压缩它解压缩一个空文件夹
6- 尝试在计算机中解压缩(没问题,一切正常)
7- 尝试从另一个 links 解压缩另一个文件(没有错误一切正常)
8- 更改每个文件名并将其上传到不同的文件夹后重新压缩计算机中的文件夹link(同样的问题)
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
}
我改用这个library,它解决了所有问题
我有大约一百个 .jpg 文件,我将其作为 .zip 上传到此 link 然后我尝试下载它并在我的应用程序中解压缩,所以下载没问题,但我有尝试使用下面的代码解压缩文件时出现下图所示的错误,
知道为什么会这样吗?
这是我已经尝试解决的问题
1-获取错误中提到的.jpg文件并将其重命名为zip文件(同样的错误) 2-获取错误中提到的 .jpg 文件并将其删除(现在 zip 中的下一个 .jpg 文件发生了同样的错误) 3-更改目录(同样的错误) 4- 更改 zip 中的每个文件名(同样的错误) 5- 尝试多次解压缩它解压缩一个空文件夹 6- 尝试在计算机中解压缩(没问题,一切正常) 7- 尝试从另一个 links 解压缩另一个文件(没有错误一切正常) 8- 更改每个文件名并将其上传到不同的文件夹后重新压缩计算机中的文件夹link(同样的问题)
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
}
我改用这个library,它解决了所有问题