在android中一起压缩两个文件

时间:2015-05-27 07:33:54

标签: java android

我想将具有不同文件扩展名的两个不同文件压缩成一个文件。一个文件分机是 .txt ,另一个是 .amr 。我的zip文件最终大小为0KB XXXXXX.zip,当我提取它时,它会给我一条消息,说明文件已损坏或损坏。

我压缩了两种不同的文件类型,也许遇到的情况是0KB。

任何人都有更好的方法将文件压缩在一起吗?

2 个答案:

答案 0 :(得分:0)

我找到了来自herestackoverflow的示例。他们使用“java.util.zip”库,它们很简单

答案 1 :(得分:-1)

这是我在我的应用程序中用来制作zip文件的方法...只需将文件放入数组并静态执行makeZip方法。

import java.util.zip。*

public class Zipper {

    /**
     * Creates a zip file from a File array <br>
     *  <br>
     * @param files to add to zipFile.
     * @param zipFile file zip to create.
     * @return compressed zip file.
     * 
     * @throws IOException in case of error.
     */
    private static synchronized File makeZip(File[] files, File zipFile) 
    {
        try {
            FileOutputStream fos = new FileOutputStream(zipFile.getAbsolutePath());
            ZipOutputStream zos = new ZipOutputStream(fos);

            for (File fileEntry : files) {
                FileInputStream fis = new FileInputStream(fileEntry);
                ZipEntry zipEntry = new ZipEntry(fileEntry.getName());
                zos.putNextEntry(zipEntry);

                byte[] bytes = new byte[1024];
                int length;
                while ((length = fis.read(bytes)) >= 0) 
                {
                    zos.write(bytes, 0, length);
                }

                zos.closeEntry();
                fis.close();

                // delete already compressed files 
                fileEntry.delete();
            }
            zos.close();
            fos.close();
        } catch (IOException e) {
            // catch exception
        }

        return zipFile;
    }
}

使用(如果您将方法放在课程Zipper中):

File[] files = new File[2];
files[0] = new File("path/to/file.amr");
files[1] = new File("path/toother/file.txt");

File zipfile = Zipper.makefile(files, new File("destiny/of/file.zip"));