Je sais que c'est une tâche facile, mais après avoir changé mon code, il a cessé de fonctionner et je ne peux pas le récupérer! J'utilise deux fonctions zip et décompressez, même si ce qu'il fait est « pot » et « unjar », mais cela ne devrait pas faire une énorme différencezip et unzip en Java
public static void zipit(File[] infiles, JarOutputStream jos) throws Exception
{
zipit(infiles,"", jos);
}
public static void zipit(File[] infiles, String root, JarOutputStream jos) throws Exception
{
byte[] buffer = new byte[4096];
for(int i=0; i<infiles.length; i++)
{
// recursive call for subfolders... temporary
if(infiles[i].isDirectory())
{
zipit(infiles[i].listFiles(), infiles[i].getName() + "/", jos);
continue;
}
// create string with absolute path
String entryfile = root + infiles[i].getName();
JarEntry entry = new JarEntry(entryfile);
zos.putNextEntry(entry);
FileInputStream fis = new FileInputStream(infiles[i]);
int count;
while((count = fis.read(buffer, 0, buffer.length)) != -1)
zos.write(buffer, 0, count);
}
}
public static void unzipit(File zipfile, File outputfolder) throws Exception
{
JarFile jar = new JarFile(zipfile);
for(Enumeration entries = jar.entries(); entries.hasMoreElements();)
{
JarEntry entry = (JarEntry) entries.nextElement();
File unzipped = new File(outputfolder, entry.getName());
if (entry.isDirectory() && !unzipped.exists())
{
unzipped.mkdirs();
continue;
}
else if (!unzipped.getParentFile().exists())
unzipped.getParentFile().mkdirs();
FileOutputStream fos = new FileOutputStream(unzipped);
InputStream in = jar.getInputStream(entry);
byte[] buffer = new byte[4096];
int count;
while((count = in.read(buffer, 0, buffer.length)) != -1)
fos.write(buffer, 0, count);
fos.close();
}
}
Toute aide/suggestions?
L'erreur se produit lors de la création du fichier Jar:
java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:131)
at java.util.jar.JarFile.<init>(JarFile.java:150)
at java.util.jar.JarFile.<init>(JarFile.java:114)
Qu'avez-vous modifié? Peut-être devriez-vous envisager d'utiliser le contrôle de la source. –
Qu'est-ce qui ne fonctionne pas exactement? "Stopped working" ne suffit pas – unbeli
Je ne faisais que tester la fonction unzip, mais quand j'essaie de décompresser quelque chose précédemment zippé avec la fonction zip, il crache l'erreur – omtinez