2014-04-25 330 views
0

我試圖從字節數組中創建「.zip」文件,但每次嘗試打開它時都會出現錯誤。這裏是代碼:FileOutputStream壓縮文件打開錯誤:「文件無法打開爲壓縮文件」

import java.io.ByteArrayOutputStream; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.BufferedReader; 
import java.io.PrintWriter; 

public class ReadTxtFile { 

public static void BinFileContToBinArr(String path) throws Throwable{ 
    BufferedReader inputStream = null; 
    PrintWriter outputStream = null; 

    try{ 
     String el = null; 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 

     inputStream = new BufferedReader(new FileReader(path)); 
     FileOutputStream fos = new FileOutputStream("D:/texttNE22W.zip"); 
     while((el=inputStream.readLine()) != null){ 
      baos.write(el.getBytes()); 
     } 
     byte[] b = baos.toByteArray(); 
     for(int i = 0; i<b.length; i++){ 
      System.out.print((char)b[i] + " "); 
     } 
     fos.write(b);   
    } 
    finally{ 
     if (inputStream!=null){ 
      inputStream.close(); 
     } 
     if(outputStream!=null){ 
      outputStream.close(); 
     }   
    } 
} 

public static void main(String[] args) throws Throwable { 
    String path = "D:/text.txt"; 
    BinFileContToBinArr(path); 

} 
} 

我做了一個研究,但沒有找到解決方案。此外,我試圖創建一個「.txt」文件,它的工作原理。唯一的問題是創建一個「.zip」。

事先謝謝!順便說一句,如果以前有人遇到過這個問題,可以隨意投票或者如果你願意的話給我留言,因爲如果這是一個常見的錯誤,我很感興趣。

回答

1

您需要使用ZipOutputStream而不是FileOutputStream。

+0

謝謝!然而,在我正在學習的書中,它說要使用FileOutputStream,並且我對該解決方案感興趣。 – Kirev

+0

因此,本書要求您手動執行壓縮?您需要複製ZipOutputStream的功能而不使用它?你需要編寫一個Zip算法的實現?這不是很微不足道,你可能想在這裏開始你的研究:http://en.wikipedia.org/wiki/Zip_%28file_format%29 – yotsov

+0

好吧,是的。謝謝,我肯定會從這裏開始...... :) – Kirev