Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中压缩目录?_Android_Kotlin - Fatal编程技术网

如何在android中压缩目录?

如何在android中压缩目录?,android,kotlin,Android,Kotlin,我需要将文件夹的备份设置为zip文件。我试着用这个类: class ZipFunctions(val context: Context) { fun zip(files: ArrayList<String>, zipFileName: String?) { try { val fileOutPut = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)?.path

我需要将文件夹的备份设置为zip文件。我试着用这个类:

class ZipFunctions(val context: Context) {

fun zip(files: ArrayList<String>, zipFileName: String?) {
    try {
        val fileOutPut =
            context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)?.path + "/$zipFileName"
        var origin: BufferedInputStream?
        val dest = FileOutputStream(fileOutPut)
        val out = ZipOutputStream(
            BufferedOutputStream(
                dest
            )
        )
        val data = ByteArray(2048)
        for (i in files.indices) {
            val fi = FileInputStream(files[i])
            origin = BufferedInputStream(fi, 2048)
            val entry = ZipEntry(files[i].substring(files[i].lastIndexOf("/") + 1))
            out.putNextEntry(entry)
            var count: Int
            while (origin.read(data, 0, 2048).also { count = it } != -1) {
                out.write(data, 0, count)
            }
            origin.close()
        }
        out.close()
    } catch (e: Exception) {
        e.printStackTrace()
    }
}
}
类zipffunctions(val-context:context){
有趣的zip(文件:ArrayList,zipFileName:String?){
试一试{
val文件输出=
context.getExternalFilesDir(Environment.DIRECTORY_下载)?.path+“/$zipFileName”
变量来源:BufferedInputStream?
val dest=FileOutputStream(fileOutPut)
val out=ZipOutputStream(
缓冲输出流(
目的地
)
)
val数据=字节数组(2048)
对于(i在files.index中){
val fi=FileInputStream(文件[i])
原点=BufferedInputStream(fi,2048)
val entry=ZipEntry(文件[i]。子字符串(文件[i]。lastIndexOf(“/”+1))
出口、出口(入口)
变量计数:Int
while(origin.read(data,002048)。还有{count=it}!=-1){
out.write(数据、0、计数)
}
origin.close()
}
结束
}捕获(e:例外){
e、 printStackTrace()
}
}
}
并按如下方式使用:

    val files = ArrayList<String>()
    val name1 = this.getDir(
        "files",
        MODE_PRIVATE
    ).path
    val name2 = this.getDir(
        "image",
        MODE_PRIVATE
    ).path
    files.add(name1)
    files.add(name2)
    val zipFunctions = ZipFunctions(this)
    zipFunctions.zip(files, "zip_file.zip")
val files=ArrayList()
val name1=this.getDir(
“文件”,
私人模式
).路径
val name2=this.getDir(
“图像”,
私人模式
).路径
文件。添加(名称1)
文件。添加(名称2)
val zipFunctions=zipFunctions(此)
zipFunctions.zip(文件“zip_file.zip”)
但它会创建一个空的zip文件。在应用程序日志中,我看到这一行:

W/System.err:java.io.FileNotFoundException:/data/user/0/app\u package\u name/app\u image:open失败:EISDIR(是一个目录)


您能帮我吗?

您正在尝试压缩文件夹。但是你应该压缩该文件夹中的所有文件。无法压缩文件夹。只有文件。@blackapps无法压缩一个文件夹?压缩该文件夹中的所有文件。