Не удается заархивировать файл в Java с помощью zipOutputStream? - PullRequest
0 голосов
/ 27 декабря 2018

На самом деле я пытался заархивировать файлы с помощью zipOutputStream, но каждый раз он не может правильно заархивировать файлы.Он застревает в определенном файле большего размера.Мой код выглядит следующим образом:

           byte[] buf = new byte[1600*1024]; 
           long totalBytes = 0;
            if(flag){
                FileInputStream fileStream = new FileInputStream(absoluteFileName);
                zip.putNextEntry(new ZipEntry(fileName));
                while ((len = fileStream.read(buf)) > 0) {
                    System.out.println("bytes read = "+len);
                    totalBytes += len;
                    System.out.println("totalBytes = "+totalBytes);
                    zip.write(buf, 0, len);
                }
            }

Вывод выглядит следующим образом:

  bytes read = 163840
  Total bytes = 163840
  bytes read = 163840
  Total bytes = 327680
  bytes read = 7940
  Total Bytes = 335620

Почему-то он не может читать дальше.Размер файла составляет 336 КБ.Итак, я считаю, что общее количество прочитанных байтов равно размеру файла.Но при попытке открыть zip-файл я получаю сообщение об ошибке, и извлеченный файл не завершен.Один извлеченный из почтового индекса - только 2468 строк, в то время как оригинальный файл - больше чем 3500 строк.

Пожалуйста, помогите.Я застрял в этом в течение последних 4 дней.

...