如何在android中压缩目录?
我需要将文件夹的备份设置为zip文件。我试着用这个类:如何在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
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无法压缩一个文件夹?压缩该文件夹中的所有文件。