2010-11-29 7 views
0

J'ai un problème avec cette méthode. Il sera appelé toutes les 24 heures (à 3 heures du matin) et devrait zip un fichier. La première fois, cela fonctionne correctement. à la deuxième boucle, le fichier zip ne peut atteindre que 4 Mo (devrait être 1,5 Go). qu'est-ce que je me trompe? (Désolé pour mon mauvais anglais). voici le code:Fichier Zip toutes les 24 heures

private static void zipFile(String srcfile, String desfile) throws IOException { 
     FileInputStream in = new FileInputStream(srcfile); 
     BufferedInputStream in2 = new BufferedInputStream(in); 
     FileOutputStream out = new FileOutputStream(desfile); 
     GZIPOutputStream zipOut = new GZIPOutputStream(out); 
     BufferedOutputStream out2 = new BufferedOutputStream(zipOut); 
     int chunk; 
     appendLog("start zip..."); 
     while ((chunk = in2.read()) != -1) { 
       out2.write(chunk); 
     } 
     out2.close(); 
     zipOut.close(); 
     out.close(); 
     appendLog("zipping file done: " + desfile); 
} 
+0

'à la deuxième boucle' quelle deuxième boucle? –

+0

Le contenu du fichier zip du jour 2 - est-il corrompu ou incomplet? –

+0

Par "la deuxième boucle" je pense qu'il veut dire la deuxième fois que la méthode est appelée. –

Répondre

0

Le fichier desfile et srcfile sont-ils les mêmes à chaque lancement?

Si tel est le cas, votre code remplacera le fichier desfile par les données compressées de srcfile chaque fois qu'il est appelé, sans ajouter de nouvelles données dans ce fichier. Dans cette condition, êtes-vous sûr que la taille du fichier de destination aurait dû augmenter autant?

+0

le srcfile est toujours le même, le desfile est différent sur chaque boucle ... – Andi

0

Les flux dans et in2 ne sont pas fermés dans cet extrait. Peut-être que le fichier src est ouvert par la dernière exécution de cette méthode et que le second ouvert sur ce fichier échoue?

Questions connexes