里面的zip文件没有包含主文件夹在android java中

时间:2015-04-07 10:15:10

标签: java android

即时使用此代码,它完美地创建了zip文件,例如我有文件夹

sdcard / music当我创建xxx.zip文件时,它会创建.zip文件,其中包含音乐/歌曲以及其中的一些子文件夹

但我想在.zip文件中排除“音乐”主文件夹并希望它直接开始包含其中的所有歌曲和子文件夹,如何操作

我使用这种方式,但它在拉链时也需要主文件夹名称

public void unzipbutton(View v){ // button click

        try {
            FileOutputStream fos = new FileOutputStream("/mnt/sdcard/songs.zip");
            ZipOutputStream zos = new ZipOutputStream(fos);
            addDirToZipArchive(zos, new File("/mnt/sdcard/music"), null);
                zos.flush();
                fos.flush();
                zos.close();
                fos.close();
        } catch (Exception e) {

            e.printStackTrace();
        }

    }

     public static void addDirToZipArchive(ZipOutputStream zos, File fileToZip, String parrentDirectoryName) throws Exception {
        if (fileToZip == null || !fileToZip.exists()) {
            return;
        }

        String zipEntryName = fileToZip.getName();
        if (parrentDirectoryName!=null && !parrentDirectoryName.isEmpty()) {
            zipEntryName = parrentDirectoryName + "/" + fileToZip.getName();
        }

        if (fileToZip.isDirectory()) {
            System.out.println("+" + zipEntryName);
            for (File file : fileToZip.listFiles()) {
                addDirToZipArchive(zos, file, zipEntryName);
            }
        } else {
            System.out.println("   " + zipEntryName);
            byte[] buffer = new byte[1024];
            FileInputStream fis = new FileInputStream(fileToZip);
            zos.putNextEntry(new ZipEntry(zipEntryName));
            int length;
            while ((length = fis.read(buffer)) > 0) {
                zos.write(buffer, 0, length);
            }
            zos.closeEntry();
            fis.close();
        }
    }

任何人都对此有所帮助,谢谢

这一直很棘手,直到现在对我来说都没有办法:/

1 个答案:

答案 0 :(得分:0)

在ZipEntry中检查zipEntryName的完整路径,它必须是:" music / Pink / try.mp3"只需调用子字符串以获取zipEntryName" Pink / try.mp3",您的zip文件将是相同的" songs.zip"但在其中你会找到文件夹" Pink"而是主文件夹" music / Pink ..."

它对我有用。