ciao a tutti, ho un problemino.
Una semplice applicazione che scarica un file zip da un server ftp, e lo scompatta.
La parte che scarica mi da file corrotti, ma che manualmente si riescono ad aprire.
errore WINRAR:
! C:\Programmi\Java\classi_NBean\downloader\file_out .zip: The archive is corrupt
L parte che scompatta, funziona su file di prova, ma non riesce ad aprire quelli semicorrotti scaricati, errore :
Unhandled exception:
java.util.zip.ZipException: invalid END header (bad central directory offset)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:114)
at java.util.zip.ZipFile.<init>(ZipFile.java:75) ... etc..
Codice per scaricare zip
Codice per scompattare zipcodice:public class ThreadloadFileSream3 extends Thread{ public ThreadloadFileSream3 (){ } @Override public void run() { try { URL url = new URL("ftp://utente:password@server/directory/file.zip;type=i"); URLConnection con = url.openConnection(); BufferedInputStream in = new BufferedInputStream(con.getInputStream()); FileOutputStream out = new FileOutputStream("file_out.zip"); lung=in.read(); System.out.println("lung="+lung); int i = 0; byte[] bytesIn = new byte[1024]; System.out.println("leggi zip"); while ((i = in.read(bytesIn)) != -1) { out.write(bytesIn, 0, i); } out.close(); in.close(); jLabel2.setText("installazione completata"); System.out.println("fine stream"); } catch( Exception e ) { } } }
Grazie per l'aiuto.codice:public static final void unZip2() { Enumeration entries; ZipFile zipFile; String zip =("file_out.zip"); try { zipFile = new ZipFile(zip); entries = zipFile.entries(); while(entries.hasMoreElements()) { ZipEntry entry = (ZipEntry)entries.nextElement(); if(entry.isDirectory()) { System.err.println("Extracting directory: " + entry.getName()); (new File(entry.getName())).mkdir(); continue; } System.err.println("Extracting file: " + entry.getName()); copyInputStream(zipFile.getInputStream(entry), new BufferedOutputStream(new FileOutputStream(entry.getName()))); } zipFile.close(); } catch (IOException ioe) { System.err.println("Unhandled exception:"); ioe.printStackTrace(); return; } }

Rispondi quotando
