Nano Hash - криптовалюты, майнинг, программирование

Получение исключения FileNotFoundException при распаковке zip-файла через Java

У меня есть метод, который распаковывает zip-файлы через Java.

Этот метод работает нормально.

Но недавно я пытался распаковать определенный файл (final output.zip) с помощью этого метода, но получил исключение во время выполнения.

Ниже приведен код этого метода:

public static List<String> unzipFiles(File zipFile, File targetDirectory) {
    List<String> files = new ArrayList<String>();                       
    try (FileInputStream fileInputStream = new FileInputStream(zipFile); ZipArchiveInputStream zipInputStream = new ZipArchiveInputStream(new BufferedInputStream(fileInputStream));){                  
        ZipEntry zipEntry;
        while ((zipEntry = zipInputStream.getNextZipEntry()) != null) {
            int length;
            byte data[] = new byte[bufferGlb];
            String fileName = zipEntry.getName();
            File opFile = new File(targetDirectory, fileName);
            FileOutputStream fileOutputStream = new FileOutputStream(opFile);//This is the line where the exception is thrown
            BufferedOutputStream dest = new BufferedOutputStream(fileOutputStream, bufferGlb);
            while ((length = zipInputStream.read(data, 0, bufferGlb)) != -1) {
                dest.write(data, 0, length);
            }
            dest.flush();
            files.add(fileName);
            fileOutputStream.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    } 
    return files;
}
//library import used:
//import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;

Важно отметить, что я могу успешно распаковать этот файл с помощью WinRar.

Строка, в которой я получаю исключение, отмечена комментариями в приведенном выше коде.

Трассировка стека полученного мной исключения приведена ниже:

java.io.FileNotFoundException: final output/0123450.pdf (No such file or directory)
    at java.io.FileOutputStream.open0(Native Method) ~[?:1.8.0_191]
    at java.io.FileOutputStream.open(FileOutputStream.java:270) ~[?:1.8.0_191]
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213) ~[?:1.8.0_191]
    at java.io.FileOutputStream.<init>(FileOutputStream.java:162) ~[?:1.8.0_191]
    at ZipUtility.unzipFiles(ZipUtility.java:281)

Также файл, упомянутый в исключении, 0123450.pdf фактически находится внутри zip-файла. Пожалуйста помоги.


  • @GhostCatsaysReinstateMonica Этот метод в настоящее время присутствует в каком-то малоизвестном устаревшем проекте. Я согласен. Я реорганизовал метод и соответствующим образом отредактировал свой вопрос, если это хепс 08.12.2019
  • Вы уверены, что указываете правильный путь к файлу (каталог + имя файла). 08.12.2019
  • @ jnrdn0011 да. Фактически, если вы внимательно посмотрите, я FileNotFoundException был для одного из pdf-файлов внутри zip-файла, а не для самого zip-файла 08.12.2019
  • В вашем коде нет проблем. Проблема в вашем zip-файле. 08.12.2019
  • @ jnrdn0011 Я хотел узнать, в чем проблема с zip-файлом. В любом случае получил это сейчас 09.12.2019

Ответы:


1

Раньше я сталкивался с подобной проблемой. Файл, указанный в исключении:

java.io.FileNotFoundException: final output/0123450.pdf (No such file or directory)
    at java.io.FileOutputStream.open0(Native Method) ~[?:1.8.0_191]
    at java.io.FileOutputStream.open(FileOutputStream.java:270) ~[?:1.8.0_191]
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213) ~[?:1.8.0_191]
    at java.io.FileOutputStream.<init>(FileOutputStream.java:162) ~[?:1.8.0_191]
    at ZipUtility.unzipFiles(ZipUtility.java:281)

т.е. 0123450.pdf фактически находится внутри папки final output, а не непосредственно внутри zip-файла. Попробуйте использовать zip-файл, содержащий файлы прямо внутри него.

08.12.2019
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..