2014-04-25 2 views
0

J'essaie de créer un fichier ".zip" à partir d'un tableau d'octets, mais l'erreur indiquée apparaît chaque fois que je tente de l'ouvrir. Voici le code:Fichier zip FileOutputStream ouvert ERROR: "Impossible d'ouvrir le fichier en tant qu'archive"

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); 

} 
} 

J'ai fait une recherche mais je n'ai pas trouvé de solution. En outre, j'ai essayé de créer un fichier ".txt" et cela fonctionne. Le seul problème est quand il s'agit de créer un ". Zip".

Merci d'avance! En passant, si quelqu'un a déjà rencontré ce problème, n'hésitez pas à voter ou à me laisser un commentaire si vous le souhaitez, car cela m'intéresse si c'est une erreur commune.

Répondre

1

Vous devez utiliser ZipOutputStream au lieu de FileOutputStream.

+0

Merci beaucoup! Cependant, dans le livre où j'étudie, il est dit d'utiliser FileOutputStream et je suis intéressé par cette solution. – Kirev

+0

Alors le livre vous demande d'implémenter manuellement le zipping? Vous devez répliquer la fonctionnalité de ZipOutputStream sans l'utiliser? Vous devez écrire une implémentation de l'algorithme Zip? Ce n'est pas très trivial, vous pouvez commencer votre recherche ici: http://en.wikipedia.org/wiki/Zip_%28file_format%29 – yotsov

+0

Eh bien, oui. Merci, je vais certainement commencer à partir d'ici ... :) – Kirev

Questions connexes