Bu yazıda zip dosyası verildiğinde, sıkıştırılmış dosyaların dosya adlarını listelemeyi öğreneceksiniz.
Dört farklı dosyanın bir zip dosyası olarak sıkıştırıldığını varsayalım. İsimlerini listelememiz gerekiyor. Nasıl yapacağımızın çözümü aşağıdaki gibi olacaktır.
Çözüm
- Zip dosyasındaki her dosya Java’da ZipEntry olarak temsil edilir. Zip dosyalarını okumanın iki yolu vardır.
- Java’da akışları kullanın.
- input() yöntemini kullanın.

stream kullanma
Bu yöntemde, ZipEntry nesnelerinin akışlarını döndüren ZipFile nesnesi üzerinde stream() yöntemini kullanırız.
Aşağıdaki kod örneğini inceleyin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import java.io.File; import java.io.IOException; import java.util.Enumeration; import java.util.List; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class Main { private static void Listele(String dosyaAdi){ ZipFile zipFile = null; File file = new File(dosyaAdi); try { zipFile = new ZipFile(file); List<String> dosyalar = zipFile.stream().map(ZipEntry::getName).collect(Collectors.toList()); System.out.println("Zip Dosya İçeriği - " + dosyalar); zipFile.close(); } catch (IOException ioException) { System.out.println("Dosya okuma hatası " + ioException); } } public static void main(String[] args) { String dosyaAdi = "file.zip"; Listele(fileName); } } |
Adım 1: Zip dosyasının adını bir File nesnesi oluşturmak için kullanılır.
Adım 2: Adım 1’de oluşturulan File nesnesi, bir ZipFile nesnesi oluşturmak için geçirilir.
Adım 3: ZipFile nesnesi üzerinde .stream() yöntemini kullanarak ZipEntry nesnelerindeki zip dosyasındaki içeriklerin listesini alıyoruz.
Adım 4: Tüm dosya adları, stream() üzerindeki map() işlevi kullanılarak bir ‘Liste’ olarak toplanır ve saklanır.
entries() metodu
ZipFile nesnesindeki entries() yöntemi, zip dosyasının öğeleri arasında dolaşabileceğimiz bir numaralandırma döndürür.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import java.io.File; import java.io.IOException; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class Zip { private static void listContents(String fileName){ ZipFile zipFile = null; File file = new File(fileName); try { zipFile = new ZipFile(file); Enumeration<? extends ZipEntry> entries = zipFile.entries(); while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); String entryName = entry.getName(); System.out.println("ZIP Entry: " + entryName); } zipFile.close(); } catch (IOException ioException) { System.out.println("Error opening zip file" + ioException); } } public static void main(String[] args) { listContents("file.zip"); } } |










Yorum Yap