Почему мой код не удаляет zip-файл, созданный моим модульным тестом?

Я работаю в Java-приложении с Spring Boot, и в одном из своих UT я создаю ZIP-файл (проверяю записи...) и в конце пытаюсь удалить его из своей системы, но что я пытаюсь, не получается.

Вы можете найти пример кода, который я использую, по следующей ссылке: Почему в моем тесте возникает исключение java.io.IOException: Stream Closed?

Резюме кода:

//I recover the zip 
        ZipFile zipFile = new ZipFile( "src/test/resources/exported_data_test.zip");
        List<String> entries = zipFile.stream().map(ZipEntry::getName).collect(Collectors.toList())

//Doing assertions...

//Deletion of the zip
File file = new File( "src/test/resources/exported_data_test.zip");
file.delete();

Но в конце теста zip-архив все еще существует в моей системе:

Может ли кто-нибудь помочь мне удалить zip-файл в конце теста?

@BIBOOUnit, результат ложный

paymer 17.07.2024 10:24

Вы вызываете close на ZipFile перед началом новой операции?

Mahdi Zarei 17.07.2024 10:27
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Прежде чем начинать новую операцию с тем же файлом, вам необходимо закрыть его.

На основе вашего примера:

//I recover the zip 
ZipFile zipFile = new ZipFile( "src/test/resources/exported_data_test.zip");
List<String> entries = zipFile.stream().map(ZipEntry::getName).collect(Collectors.toList())

zipFile.close(); // Added

//Doing assertions...

//Deletion of the zip
File file = new File( "src/test/resources/exported_data_test.zip");
file.delete();

Лучше всего использовать интерфейс Closable/AutoCloseable с возможностью попробовать с ресурсом:

List<String> entries;
//I recover the zip 
try (ZipFile zipFile = new ZipFile( "src/test/resources/exported_data_test.zip")) {
    entries = zipFile.stream().map(ZipEntry::getName).collect(Collectors.toList())
}

//Doing assertions...

//Deletion of the zip
File file = new File( "src/test/resources/exported_data_test.zip");
file.delete();

Обратите внимание, что Zip создается внутри скобок попытки. После выхода из области, следующей за попыткой, программа вызовет закрытие zip-файла.

Другие вопросы по теме