SeThCoHeN
03-07-2006, 17:46
ho, seguendo l'esercizio proposto su una rivista, creato la classe JavaZip.java, ecco il codice
import java.io.*;
import java.util.zip.*;
public class JavaZip {
static final int BUFFER = 2048000;
public static void main(String[] args) {
System.out.println("<TAG/> JavaZip - Compression");
String nomeFileZip = args[0];
String directory="";
byte[] buffer = new byte[BUFFER];
String[] argomenti = args;
String[] listaFileZip = new String[argomenti.length-1];
for (int i=1; i < argomenti.length; i++)
listaFileZip[i-1] = argomenti[i];
try { ZipOutputStream out =
new ZipOutputStream(new FileOutputStream(nomeFileZip));
out.setLevel(Deflater.DEFAULT_COMPRESSION);
aggiungiFile(listaFileZip, directory, out, buffer);
} catch(Exception e) {
System.out.println("Error:"+e);
}
}
public static void aggiungiFile(String[] listaFile, String directory, ZipOutputStream out, byte[] buffer) {
try {
for (int i= 0; i < listaFile.length;i++) {
File fileAggiungere = new File (directory+listaFile[i]);
System.out.println("Compressing: "+directory+listaFile[i]);
if (!fileAggiungere.isDirectory()) {
FileInputStream in = new FileInputStream(directory+listaFile[i]);
out.putNextEntry(new ZipEntry(directory+listaFile[i]));
int len;
while ((len = in.read(buffer)) >0) {
out.write(buffer, 0, len);
}
out.closeEntry();
in.close();
} else { aggiungiFile(fileAggiungere.list(), directory+listaFile[i]+"/", out, buffer);
}
}
} catch(Exception e) {
System.out.println("Error:"+e);
}
}
}
il tutto sembra essere in regola, infatti riesco a compilarlo perfettamente, il problema č che se dal prompt lancio il comando per creare il file .zip, questo viene creato ma risulta danneggiato.
il suo contenuto non puņ essere estratto e il file che ci aggiungo risulta di o byte.
ho creato anche la classe JavaUnZip.java ma questa funziona perfettamente infatti riesco ad estrarre perfettamente il contenuto di un file .zip
creato con un software come WinRAR.
Dove ho sbagliato?
import java.io.*;
import java.util.zip.*;
public class JavaZip {
static final int BUFFER = 2048000;
public static void main(String[] args) {
System.out.println("<TAG/> JavaZip - Compression");
String nomeFileZip = args[0];
String directory="";
byte[] buffer = new byte[BUFFER];
String[] argomenti = args;
String[] listaFileZip = new String[argomenti.length-1];
for (int i=1; i < argomenti.length; i++)
listaFileZip[i-1] = argomenti[i];
try { ZipOutputStream out =
new ZipOutputStream(new FileOutputStream(nomeFileZip));
out.setLevel(Deflater.DEFAULT_COMPRESSION);
aggiungiFile(listaFileZip, directory, out, buffer);
} catch(Exception e) {
System.out.println("Error:"+e);
}
}
public static void aggiungiFile(String[] listaFile, String directory, ZipOutputStream out, byte[] buffer) {
try {
for (int i= 0; i < listaFile.length;i++) {
File fileAggiungere = new File (directory+listaFile[i]);
System.out.println("Compressing: "+directory+listaFile[i]);
if (!fileAggiungere.isDirectory()) {
FileInputStream in = new FileInputStream(directory+listaFile[i]);
out.putNextEntry(new ZipEntry(directory+listaFile[i]));
int len;
while ((len = in.read(buffer)) >0) {
out.write(buffer, 0, len);
}
out.closeEntry();
in.close();
} else { aggiungiFile(fileAggiungere.list(), directory+listaFile[i]+"/", out, buffer);
}
}
} catch(Exception e) {
System.out.println("Error:"+e);
}
}
}
il tutto sembra essere in regola, infatti riesco a compilarlo perfettamente, il problema č che se dal prompt lancio il comando per creare il file .zip, questo viene creato ma risulta danneggiato.
il suo contenuto non puņ essere estratto e il file che ci aggiungo risulta di o byte.
ho creato anche la classe JavaUnZip.java ma questa funziona perfettamente infatti riesco ad estrarre perfettamente il contenuto di un file .zip
creato con un software come WinRAR.
Dove ho sbagliato?