pireda
25-07-2003, 17:56
Sto cercando di realizzare una procedura che zippi il contenuto della directory passatale, ma il file zip che mi viene generato, contiene i files vuoti (i nomi sono giusti, ma non contengono neanche un byte).
Posto il codice:
FileOutputStream fout = null;
try
{
fout = new FileOutputStream(cartella + File.separator + "archivio.zip");
}
catch(FileNotFoundException ex)
{
ex.printStackTrace();
}
Utils.zippaOrdine(new File(cartella), fout);
Ecco la funzione:
public static void zippaOrdine(File cartella, FileOutputStream fout)
{
File[] files = cartella.listFiles();
boolean trovato = false;
ZipOutputStream zout = new ZipOutputStream(fout);
try
{
for (int i = 0; i < files.length; i++)
{
if (files[i].isDirectory())
{
zippaOrdine(files[i], fout);
}
else
{
if (!files[i].getName().equals("archivio.zip"))
{
System.out.println("Zippo: " + files[i].getName());
trovato = true;
ZipEntry ze = new ZipEntry(files[i].getName());
zout.putNextEntry(ze);
zout.closeEntry();
}
}
}
if (trovato)
zout.close();
}
catch(ZipException ex)
{
System.out.println("Errore nello zippaggio: " + ex.getMessage());
}
catch(IOException ex)
{
System.out.println("Errore nello zippaggio: " + ex.getMessage());
}
}
Posto il codice:
FileOutputStream fout = null;
try
{
fout = new FileOutputStream(cartella + File.separator + "archivio.zip");
}
catch(FileNotFoundException ex)
{
ex.printStackTrace();
}
Utils.zippaOrdine(new File(cartella), fout);
Ecco la funzione:
public static void zippaOrdine(File cartella, FileOutputStream fout)
{
File[] files = cartella.listFiles();
boolean trovato = false;
ZipOutputStream zout = new ZipOutputStream(fout);
try
{
for (int i = 0; i < files.length; i++)
{
if (files[i].isDirectory())
{
zippaOrdine(files[i], fout);
}
else
{
if (!files[i].getName().equals("archivio.zip"))
{
System.out.println("Zippo: " + files[i].getName());
trovato = true;
ZipEntry ze = new ZipEntry(files[i].getName());
zout.putNextEntry(ze);
zout.closeEntry();
}
}
}
if (trovato)
zout.close();
}
catch(ZipException ex)
{
System.out.println("Errore nello zippaggio: " + ex.getMessage());
}
catch(IOException ex)
{
System.out.println("Errore nello zippaggio: " + ex.getMessage());
}
}