在Android中创建zip文件可以使用Java的ZipOutputStream类。下面是一个示例代码:
import android.util.Log;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipUtils {
private static final int BUFFER_SIZE = 1024;
public static void createZipFile(String sourceFolderPath, String zipFilePath) throws IOException {
FileOutputStream fos = new FileOutputStream(zipFilePath);
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(fos));
File sourceFolder = new File(sourceFolderPath);
addFilesToZip(sourceFolder, sourceFolder.getName(), zos);
zos.close();
}
private static void addFilesToZip(File file, String parentPath, ZipOutputStream zos) throws IOException {
byte[] buffer = new byte[BUFFER_SIZE];
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File childFile : files) {
addFilesToZip(childFile, parentPath + "/" + file.getName(), zos);
}
} else {
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis, BUFFER_SIZE);
String zipEntryPath = parentPath + "/" + file.getName();
ZipEntry zipEntry = new ZipEntry(zipEntryPath);
zos.putNextEntry(zipEntry);
int count;
while ((count = bis.read(buffer, 0, BUFFER_SIZE)) != -1) {
zos.write(buffer, 0, count);
}
bis.close();
}
}
}
使用上述代码,你可以调用createZipFile()
方法来创建一个包含指定文件夹内容的zip文件。需要传入源文件夹路径和目标zip文件路径作为参数。