2011-09-04 10 views
5

मुझे सूर्य साइट (http://java.sun.com/developer/technicalArticles/Programming/compression/) से उदाहरण मिला, लेकिन यह BufferedOutputStream देता है। लेकिन मैं ZipEntry फ़ाइल को इनपुटस्ट्रीम के रूप में प्राप्त करना चाहता हूं और फिर अगली फ़ाइल को संसाधित करना चाहता हूं। क्या यह संभव है? मेरे प्रोग्राम में हार्डडिस्क तक कोई पहुंच नहीं है, इसलिए यह अस्थायी रूप से फ़ाइलों को भी सहेज नहीं सकता है।मैं ज़िप फ़ाइल से फ़ाइलों को जावा के साथ मेमोरी में कैसे पढ़ सकता हूं?

import java.io.*; 
import java.util.zip.*; 

public class UnZip { 
    final int BUFFER = 2048; 
    public static void main (String argv[]) { 
     try { 
     BufferedOutputStream dest = null; 
     FileInputStream fis = new 
     FileInputStream(argv[0]); 
     ZipInputStream zis = new 
     ZipInputStream(new BufferedInputStream(fis)); 
     ZipEntry entry; 
     while((entry = zis.getNextEntry()) != null) { 
      System.out.println("Extracting: " +entry); 
      int count; 
      byte data[] = new byte[BUFFER]; 
      // write the files to the disk 
      FileOutputStream fos = new 
      FileOutputStream(entry.getName()); 
      dest = new 
       BufferedOutputStream(fos, BUFFER); 
      while ((count = zis.read(data, 0, BUFFER)) 
       != -1) { 
       dest.write(data, 0, count); 
      } 
      dest.flush(); 
      dest.close(); 
     } 
     zis.close(); 
     } catch(Exception e) { 
     e.printStackTrace(); 
     } 
    } 
} 

उत्तर

13

ठीक है, बस बात यह है कि कुछ आप डेटा के साथ क्या करना चाहते हैं में फ़ाइल लिखते हैं बदल जाते हैं।

while((entry = zis.getNextEntry()) != null) { 
    System.out.println("Extracting: " + entry); 
    int count; 
    byte data[] = new byte[BUFFER]; 
    string filename = entry.getName(); 
    System.out.println("Filename: " + filename); 
    while ((count = zis.read(data, 0, BUFFER)) != -1) { 
     // Do whatever you want with the data variable 
     System.out.println(data); 
    } 
} 
+0

'बाइट [] डेटा = नया बाइट [बफर];' ?? –

संबंधित मुद्दे