2012-11-02 90 views
1

我從String創建了多個文件。將多個文件保存爲ZIP而不保存它們並將它們讀入

例如4個字符串;一個是xml,另一個是csv格式。

我的問題是,我必須先將這些字符串保存到文件中,然後再讀取它,然後寫出到ZipOutputStream?看起來真的有點浪費。

預先感謝

+0

非常類似的問題:http://stackoverflow.com/questions/357851/in-java-how-to-zip-file-from-byte-array – JeffS

+0

http://stackoverflow.com/questions/9766420/how-to-send-zip-file-without-creating-it-on-physical-location 此鏈接可能會有幫助 – Rejinderi

回答

2

因此,這裏是我救了多個文件,而無需之前創建物理文件的解決方案。小心字符串大小。

for (int i =0; i <stringArray.size();i++) { 
       String outString = stringArray.get(i); 
       String fileName = null; 
       if (i == 0) { 
        fileName = "StringOne.xml"; 

       } else if (i == 1) { 
        fileName = "StringTwo.csv"; 
       } else if (i ==2) { 
        fileName = "StringThree.csv"; 
       } else if (i == 3) { 
        fileName = "StringFour.csv"; 
       } 
       Log.d("ZipCreation", "Creating "+fileName); 
       // SAVE THE STRING AS A BYTE ARRAY IN MEMORY INSTEAD OF CREATING AND SAVING TO A NEW FILE 
       ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
       DataOutputStream byteOut = new DataOutputStream(baos); 
       byte[] data = stringArray.get(i).getBytes("UTF-8"); 
       byteOut.write(data); 
       byteOut.close(); 
       byte[] input = baos.toByteArray(); 

       ZipEntry entry = new ZipEntry(fileName); 
       entry.setSize(input.length); 
       zos.putNextEntry(entry); 
       zos.write(input); 
       zos.closeEntry(); 
      } 

希望這可以幫助別人

相關問題