Что не так с этим методом почтового индекса? - PullRequest
0 голосов
/ 30 ноября 2011

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

Архив находится в неизвестном формате или поврежден

Это метод:

private void zipTestFiles() throws FileNotFoundException, IOException
{
    File[] filenames = fileDir.listFiles(fileNameFilter(Constants.PAGE_MON_FILENAME_FILTER));

    byte[] buf = new byte[1024];

    String outFilename = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separatorChar + Constants.PAGEMONITOR_ZIP;
    DeflaterOutputStream out = new DeflaterOutputStream(new BufferedOutputStream(new FileOutputStream(outFilename)));

    for (int i=0; i<filenames.length; i++)
    {
        FileInputStream in = new FileInputStream(filenames[i]);

        int len;
        while ((len = in.read(buf)) > 0)
        {
            out.write(buf, 0, len);
        }

        in.close();
        }
    out.close();
}

Ответы [ 2 ]

3 голосов
/ 30 ноября 2011

Попробуйте с ZipOutputStream, который уже существует в Java.DeflaterOutputStream использует только метод DEFLATE для сжатия, но не помещает заголовки ZIP автоматически.

3 голосов
/ 30 ноября 2011

Вы должны использовать ZipOutputStream вместо DeflaterOutputStream. И не забудьте создать записи. Прочитайте javadoc ZipOutputStream перед написанием реализации.

...