Создание ZIP-файлов на Android - PullRequest
0 голосов
/ 25 апреля 2018

Я использую следующий код для создания zip-файла на моем внешнем хранилище, единственная проблема заключается в том, что файл не может быть извлечен на ПК с Windows или использован для чего-либо, кроме Android, я думаю, что я сузил проблема с несуществующей папкой.

Мой вопрос: что я сделал не так, чтобы вызвать странный формат zip?

/** 
 EXAMPLE USAGE : zipFolder("/sdcard0/downloads", "/sdcard0/Update.zip")
 **/
static public void zipFolder(String srcFolder, String destZipFile)
throws Exception
{
    ZipOutputStream zip = null;
    FileOutputStream fileWriter = null;
    fileWriter = new FileOutputStream(destZipFile);
    zip = new ZipOutputStream(fileWriter);
    addFolderToZip("", srcFolder, zip);
    zip.flush();
    zip.close();
}


static String firstFolder ="";
static private void addFileToZip(String path, String srcFile,
                                 ZipOutputStream zip) throws Exception
{

    if (firstFolder == "")
    {
        firstFolder = getLastPathComponent(path);
    }

    File folder = new File(srcFile);
    if (folder.isDirectory())
    {
        addFolderToZip(path, srcFile, zip);
    }
    else
    {
        byte[] buf = new byte[1024];
        int len;
        FileInputStream in = new FileInputStream(srcFile);
        zip.putNextEntry(new ZipEntry(path.replace(firstFolder, "") + "/" + folder.getName()));
        while ((len = in.read(buf)) > 0)
        {
            zip.write(buf, 0, len);
        }
    }
}
public static String getLastPathComponent(String filePath)
{
    String[] segments = filePath.split("/");
    if (segments.length == 0)
        return "";
    String lastPathComponent = segments[segments.length - 1];
    return lastPathComponent;
}
static private void addFolderToZip(String path, String srcFolder,
                                   ZipOutputStream zip) throws Exception
{
    File folder = new File(srcFolder);
    for (String fileName : folder.list())
    {
        if (path.equals(""))
        {
            addFileToZip(folder.getName().replace(firstFolder, ""), srcFolder + "/" + fileName, zip);
        }
        else
        {
            addFileToZip(path + "/" + folder.getName(), srcFolder + "/"
                         + fileName, zip);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...