[Résolu]java.util.zip ne pas avoir le chemin des fichiers

java.util.zip ne pas avoir le chemin des fichiers [Résolu] - Java - Programmation

Marsh Posté le 15-04-2008 à 10:53:02    

Bonjour,
 
Voilà je vous explique mon souci. J'ai une application qui me génère des fichiers PDF, ensuite je met ces fichiers dans un ZIP, jusque là pas de problème. Le problème est que dans le zip il y a le chemin des fichiers zippés, c'est à dire C, documents and settings etc...
 
j'ai publié dde dire que j'utilisaias java.util.zip
 
Je voudrais en fait ne plus avoir le chemin, pouvez vous m'aider s'il vous plait??
Merci  
 
Je vous met le code que j'utilise pour zipper mes fichies et répertoires (c'est un code trouvé sur un autre forum)

Code :
  1. public static void save(String zipName, String cheminRepertoire, String cheminZIP) {
  2.  try {
  3.   ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(cheminZIP + zipName + ".zip" ));
  4.   zip.setMethod(ZipOutputStream.DEFLATED);
  5.   zip.setLevel(Deflater.BEST_COMPRESSION);
  6.   File dataDirectories = new File(cheminRepertoire);
  7.   zipDirectory(dataDirectories, zip);
  8.   zip.close();
  9.   deleteAllFiles(cheminRepertoire);
  10.  }
  11.  catch (FileNotFoundException fileNotFound)
  12.  {}
  13.  catch (IOException io)
  14.  {}
  15. }
  16. private static void zipDirectory(File directory, ZipOutputStream zip) {
  17.  String[] listFile = directory.list();
  18.  for (int i = 0; i < listFile.length; i++) {
  19.   try {
  20.    File file = new File(directory.getPath()+"/"+listFile[i]);
  21.    if (file.isDirectory()){
  22.     zipDirectory(file, zip);
  23.    }
  24.    else {
  25.     FileInputStream in = new FileInputStream(file);
  26.     byte[] bytes = new byte[in.available()];
  27.     in.read(bytes);
  28.     in.close();
  29.     ZipEntry entry = new ZipEntry(file.getPath());
  30.     entry.setTime(file.lastModified());
  31.     zip.putNextEntry(entry);
  32.     zip.write(bytes);
  33.     zip.closeEntry();
  34.    }
  35.   }
  36.   catch (FileNotFoundException fileNotFound)
  37.   {}
  38.   catch (IOException io)
  39.   {}
  40.  }
  41. }


Message édité par Bubu017 le 17-04-2008 à 12:10:54

---------------
Un kébab sauce cocktail sans oignons avec double portions de frites
Reply

Marsh Posté le 15-04-2008 à 10:53:02   

Reply

Marsh Posté le 17-04-2008 à 11:34:54    

J'ai trouvé  :bounce: (en fait on m'a un peu aidé mais bon) il suffit de remplacer getrPath par getName. Biens sur on n'a que les fichiers si on veut des répertoires mais bon après il suffit de bidouiller un peu. Voilà mon nouveau code pour montrer :

Code :
  1. private static void deleteAllFiles(String chemin) {
  2.  File directory = new File(chemin);
  3.  String[] listFile = directory.list();
  4.  for (int i = 0; i < listFile.length; i++) {
  5.   File file = new File(directory.getPath()+"/"+listFile[i]);
  6.   if (file.isDirectory()){
  7.    deleteAllFiles(file.getPath());
  8.    file.delete();
  9.   }
  10.   else {file.delete();
  11.   }
  12.   //file.delete();
  13.  }
  14. }
  15. public static void save(String zipName, String cheminRepertoire, String cheminZIP) {
  16.  try {
  17.   ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(cheminZIP + zipName + ".zip" ));
  18.   zip.setMethod(ZipOutputStream.DEFLATED);
  19.   zip.setLevel(Deflater.BEST_COMPRESSION);
  20.   File dataDirectories = new File(cheminRepertoire);
  21.   zipDirectory(dataDirectories, zip);
  22.   zip.close();
  23.   deleteAllFiles(cheminRepertoire);
  24.  }
  25.  catch (FileNotFoundException fileNotFound)
  26.  {}
  27.  catch (IOException io)
  28.  {}
  29. }
  30. private static void zipDirectory(File directory, ZipOutputStream zip) {
  31.  String[] listFile = directory.list();
  32.  for (int i = 0; i < listFile.length; i++) {
  33.   try {
  34.    File file = new File(directory.getPath()+"/"+listFile[i]);
  35.    if (file.isDirectory()){
  36.     zipDirectory(file, zip);
  37.    }
  38.    else {
  39.     FileInputStream in = new FileInputStream(file);
  40.     byte[] bytes = new byte[in.available()];
  41.     in.read(bytes);
  42.     in.close();
  43.     if(file.getParent().contains("PDF" )){
  44.      ZipEntry entry = new ZipEntry("PDF/"+file.getName());
  45.      entry.setTime(file.lastModified());
  46.      zip.putNextEntry(entry);
  47.      zip.write(bytes);
  48.      zip.closeEntry();
  49.     }
  50.     else if(file.getParent().contains("ImageRal" )){
  51.      ZipEntry entry = new ZipEntry("ImageRal/"+file.getName());
  52.      entry.setTime(file.lastModified());
  53.      zip.putNextEntry(entry);
  54.      zip.write(bytes);
  55.      zip.closeEntry();
  56.     }
  57.     else if(file.getParent().contains("Illustrations" )){
  58.      ZipEntry entry = new ZipEntry("Illustrations/"+file.getName());
  59.      entry.setTime(file.lastModified());
  60.      zip.putNextEntry(entry);
  61.      zip.write(bytes);
  62.      zip.closeEntry();
  63.     }
  64.     else if(file.getParent().contains("Notices" )){
  65.      ZipEntry entry = new ZipEntry("Notices/"+file.getName());
  66.      entry.setTime(file.lastModified());
  67.      zip.putNextEntry(entry);
  68.      zip.write(bytes);
  69.      zip.closeEntry();
  70.     }
  71.     else {
  72.      ZipEntry entry = new ZipEntry(file.getName());
  73.      entry.setTime(file.lastModified());
  74.      zip.putNextEntry(entry);
  75.      zip.write(bytes);
  76.      zip.closeEntry();
  77.     }
  78.     //ZipEntry entry = new ZipEntry(file.getName());
  79.   //  entry.setTime(file.lastModified());
  80.   //  zip.putNextEntry(entry);
  81.   //  zip.write(bytes);
  82.   //  zip.closeEntry();
  83.    }
  84.   }
  85.   catch (FileNotFoundException fileNotFound)
  86.   {}
  87.   catch (IOException io)
  88.   {}
  89.  }
  90. }


Message édité par Bubu017 le 17-04-2008 à 11:36:47

---------------
Un kébab sauce cocktail sans oignons avec double portions de frites
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed