Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1963 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Resolu] Construire un tar en java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Resolu] Construire un tar en java

n°1376853
Calahad
Posté le 29-05-2006 à 17:21:01  profilanswer
 

Il est possible de construire un fichier ".tar" en java. J'utilise le package org.apache.commons.compress.tar.* pour ce faire.
 
J'aimerai construire mon tar sans conserver l'arborescence des fichiers entrés dans ce dernier. C'est assez bête j'en conviens, mais il faut que je le fasse (oui chef...  :heink: ). Je galère à trouver comment faire, on dirait que ce n'est pas possible (sans recompiler le package, et c'est pas le but dans un premier temps).
 
Si quelqu'un a une idée, ou mieux, une solution, je suis preneur.  :jap:


Message édité par Calahad le 30-05-2006 à 09:55:34
mood
Publicité
Posté le 29-05-2006 à 17:21:01  profilanswer
 

n°1376903
frabill
Posté le 29-05-2006 à 18:06:40  profilanswer
 

Tu fais comment si 2 fichiers portent le même nom à des endroits différents de l'arborescence ?

n°1376905
Calahad
Posté le 29-05-2006 à 18:07:57  profilanswer
 

ben c'est la merde, mais ce ne sera pas le cas le chef a dit [:spamafote]

n°1376928
souk
Tourist
Posté le 29-05-2006 à 18:42:37  profilanswer
 

poste ton code pour faire un tar en gardant l'arborescence, on verra ensuite ce qu'on peut faire [:dawa]

n°1377184
Calahad
Posté le 30-05-2006 à 09:07:26  profilanswer
 

Ok, voici les deux méthodes principales :  
     

Code :
  1. /**
  2.     * Création du Tar
  3.     * @param String fileName : nom du fichier ou dossier à compresser
  4.     * @parma String saveAs : nom du fichier de destination  
  5.     * */
  6.    public void createTar(String fileName, String saveAs) throws IOException, FileNotFoundException,Exception
  7.    {
  8.      File rootDir = new File(fileName);
  9.      File saveFile = new File(saveAs);
  10.      //Appel récursif
  11.      TarOutputStream tos = new TarOutputStream(new FileOutputStream(saveFile));
  12.      tos.setLongFileMode(TarOutputStream.LONGFILE_GNU);
  13.      recurseFiles(rootDir,tos);
  14.      //Fin de l'ajout des entrées du tar,
  15.      //fermeture du flux d'entrées du tar.
  16.      tos.close();
  17.    }
  18.    /**
  19.     * Regroupement de tous les fichier dans le tar
  20.     *  
  21.     * */
  22.    private static void recurseFiles(File file, TarOutputStream tos) throws IOException, FileNotFoundException
  23.     {
  24.        //Il s'agit d'un répertoire -> récursion
  25.        if (file.isDirectory()) {
  26.           //Récupération de la liste des fichiers et dossiers du répertoire
  27.           String[] fileNames = file.list();
  28.           if (fileNames != null) {
  29.             //Lancement récursif pour être certain de prendre tous
  30.            //les fichiers et sous dossiers du répertoire courant
  31.              for (int i=0; i<fileNames.length; i++)  {
  32.              recurseFiles(new File(file, fileNames[i]),tos);
  33.              }
  34.           }
  35.        }
  36.        //Il s'agit d'un fichier -> ajout au tar
  37.        //On n'inclue pas les autres tar
  38.        else             
  39.       if (!file.getName().endsWith(TAR_EXTENSION)) {
  40.           byte[] buf = new byte[1024];
  41.           int len;
  42.           //Création d'une entrée tar avec le fichier
  43.           TarEntry tarEntry = new TarEntry(file.toString());
  44.           tarEntry.setSize(file.length());
  45.           //Création du flux d'entrée
  46.           FileInputStream fin = new FileInputStream(file);
  47.           BufferedInputStream in = new BufferedInputStream(fin);
  48.           tos.putNextEntry(tarEntry);
  49.           //Lecture du fichier
  50.           while( (len= in.read(buf)) != -1 )
  51.             tos.write(buf,0,len);
  52.           //Fermeture du flux d'entrée
  53.           in.close();
  54.           //Fermeture de l'entrée du tar
  55.           tos.closeEntry();
  56.        } 
  57.     }


Message édité par Calahad le 30-05-2006 à 09:52:54
n°1377206
Bidem
Posté le 30-05-2006 à 09:34:55  profilanswer
 

Citation :

TarEntry tarEntry = new TarEntry(file.toString());


 
Je pense que si tu ne mets que le nom du fichier (sans son chemin) ça peut marcher.
 

Code :
  1. TarEntry tarEntry = new TarEntry(file.getName());

n°1377223
Calahad
Posté le 30-05-2006 à 09:53:50  profilanswer
 

Bidem a écrit :

Citation :

TarEntry tarEntry = new TarEntry(file.toString());


 
Je pense que si tu ne mets que le nom du fichier (sans son chemin) ça peut marcher.
 

Code :
  1. TarEntry tarEntry = new TarEntry(file.getName());



 
En effet, je viens de tester... :jap: bien vu.
 
merci!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Resolu] Construire un tar en java

 

Sujets relatifs
[Résolu] Problème de compilation fonction poll()[Résolu] Texte dépasse le cadre des cellules (CSS 2)
[Java] Programmation concurrente et BlockingQueuesJava Swing - Combo
Page blanche ?? [résolu]Convertir un string PostgeSQL à HTML à travers des classes Java
Commande find sous linux [RESOLU][Résolu] Script de transfère de base de donnée
[RESOLU] initialisation de maps[RESOLU] Traduction BBCode html
Plus de sujets relatifs à : [Resolu] Construire un tar en java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR