1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
public static boolean decompress(final File file, final File folder, final boolean deleteZipAfter) throws IOException
{
boolean bSuccess = false;
Logger logger = Logger.getLogger("LogDezip");
try
{
File dirLog = new File("C:\\Applications\\Decompression\\logs\\");
if(!dirLog.exists())
dirLog.mkdirs();
File fichierlog = new File((new StringBuilder(String.valueOf(dirLog.getPath()))).append(File.separator).append("dezip.log").toString());
if(!fichierlog.exists())
fichierlog.createNewFile();
FileHandler fileHandler = new FileHandler(fichierlog.getPath());
logger.addHandler(fileHandler);
logger.setLevel(Level.ALL);
SimpleFormatter simpleFormatter = new SimpleFormatter();
fileHandler.setFormatter(simpleFormatter);
//logger.log(Level.INFO, (new StringBuilder("Fichier : ")).append(file.getName()).toString());
}
catch(SecurityException e)
{
logger.log(Level.INFO, (new StringBuilder("Acc\350s au refus\351 au fichier.")).append(file.getName()).toString());
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
// Vérification du fichier ZIP et du répertoire de destination
boolean isZipExist = MyLib.existsFile(file.toString());
Image img = new Image(file.toString());
String sExtension = img.getNomFichierAvecExtension();
// Vérification de l'existance du répertoire destination
boolean isDestExist = MyLib.existsDir(folder.toString());
if(isZipExist)
{
if(isDestExist)
{
final ZipInputStream zis = new ZipInputStream(new BufferedInputStream(new FileInputStream(file.getCanonicalFile())));
ZipEntry ze;
try
{
// Parcourt tous les fichiers
while (null != (ze = zis.getNextEntry()))
{
/*
if (!ze.isDirectory())
{
logger.log(Level.INFO, (new StringBuilder("Fichier : ")).append(ze.getName()).toString());
}
*/
//System.out.println("Fichier dézippé : "+ze);
final File f = new File(folder.getCanonicalPath(), ze.getName());
if (f.exists())
f.delete();
// Création des dossiers
if (ze.isDirectory())
{
f.mkdirs();
continue;
}
f.getParentFile().mkdirs();
final OutputStream fos = new BufferedOutputStream(new FileOutputStream(f));
// Ecriture des fichiers
try
{
try
{
final byte[] buf = new byte[8192];
int bytesRead;
while (-1 != (bytesRead = zis.read(buf)))
fos.write(buf, 0, bytesRead);
} finally {
bSuccess = true;
fos.close();
}
}
catch (final IOException ioe)
{
logger.log(Level.SEVERE, (new StringBuilder("ERROR : Fichier KO : ")).append(file.getName()).toString());
logger.log(Level.SEVERE, (new StringBuilder(" ERROR : ")).append(ioe).toString());
logger.log(Level.SEVERE, (new StringBuilder(" MESSAGE : ")).append(ioe.getMessage()).toString());
f.delete();
throw ioe;
}
}
}
finally
{
//logger.log(Level.INFO, (new StringBuilder("Fichier correctement décompressé : ")).append(file.getName()).toString());
zis.close();
}
if (deleteZipAfter)
file.delete();
}
else
{
logger.log(Level.SEVERE, (new StringBuilder(" ERROR : le repertoire de destination n'existe pas.")).toString());
}
}
else
{
logger.log(Level.SEVERE, (new StringBuilder(" ERROR : le fichier ZIP n'existe pas.")).toString());
}
return bSuccess;
} |
Partager