2014-04-25 301 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