diff --git a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/CityGmlArchive.java b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/CityGmlArchive.java
index acf2e6a04769687908e7b52d33ec207dfaae538e..03b9d2d4c90225192d791f09b94e14263153a75a 100644
--- a/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/CityGmlArchive.java
+++ b/CityDoctorParent/Extensions/CityDoctorZipLoader/src/main/java/de/hft/stuttgart/citydoctor2/ziploader/CityGmlArchive.java
@@ -8,6 +8,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.Serial;
@@ -17,8 +18,11 @@ import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
+import java.util.zip.ZipInputStream;
 
 public class CityGmlArchive {
 
@@ -31,29 +35,25 @@ public class CityGmlArchive {
 
     public static CityGmlArchive fromZipFile(String zipFile, ParserConfiguration config) {
         ArrayList<CityGmlZipEntry> archiveEntries = new ArrayList<>();
-        Path tmpDir = null;
-        try (ZipFile zipFileObj = new ZipFile(zipFile)) {
-            tmpDir = Files.createTempDirectory("zipTmp");
-            tmpDir.toFile().deleteOnExit();
-            for (Enumeration<? extends ZipEntry> entries = zipFileObj.entries(); entries.hasMoreElements();) {
-                ZipEntry entry = entries.nextElement();
-                if (entry.isDirectory()) {
+        ZipFile zip = null;
+        try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile));) {
+            zip = new ZipFile(zipFile);
+            ZipEntry ze;
+            while ((ze = zis.getNextEntry()) != null )
+            {
+                if (ze.isDirectory()) {
                     continue;
                 }
-                if (entry.getName().endsWith(".gml")) {
-                    InputStream is = zipFileObj.getInputStream(entry);
-                    archiveEntries.add(CityGmlZipEntry.of(entry, config, zipFile, tmpDir, is));
+                if (ze.getName().endsWith(".gml")) {
+                    archiveEntries.add(CityGmlZipEntry.of(ze, zip, config));
                 }
             }
         } catch (IOException e) {
             logger.error(e);
-        } catch (Exception e){
-            // Catch and rethrow other Exceptions to ensure tmpDir deletion in finally block
-            throw e;
         } finally {
-            if (tmpDir != null) {
+            if(zip != null){
                 try {
-                    FileUtils.deleteDirectory(tmpDir.toFile());
+                    zip.close();
                 } catch (IOException e) {
                     logger.error(e);
                 }