IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

FileOutputStream -> FileNotFoundException sur Zip


Sujet :

Entrée/Sortie Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 21
    Par défaut FileOutputStream -> FileNotFoundException sur Zip
    Alors voila j'ai creer un fichiers zip, pour pouvoir y stocker tout ce dont mon programme a besoin : ce zip contient des repertoires et des fichiers normaux.
    J'ai commencé par creer ma fonction zip perso

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public void Decompresser( String Archive, File FileDir ) throws Exception
        {
            final int m_BUFFER = 2048;
            byte Data[] = new byte[m_BUFFER];
     
            // Fichier de destination
            BufferedOutputStream BuffOutS = null;
            int count = 0;
     
            try
            {
                // Ouverture du fichier à dézipper
                FileInputStream FileInS = new FileInputStream( Archive );
     
                // Ouverture du buffer sur ce fichier
                BufferedInputStream BuffInS = new BufferedInputStream( FileInS );
     
                // Ouverture du fichier zip à l'aide du buffer
                ZipInputStream ZipInS = new ZipInputStream( BuffInS );
     
                ZipEntry ZipEnt;
     
                while ( ( ZipEnt = ZipInS.getNextEntry() ) != null )
                {
                    FileOutputStream FileOutS = new FileOutputStream( ZipEnt.getName() );
                    BuffOutS = new BufferedOutputStream( FileOutS, m_BUFFER );
     
                    while ( ( count = ZipInS.read( Data, 0, m_BUFFER ) ) != -1 )
                    {
                        BuffOutS.write( Data, 0, count );
                    }
     
                    BuffOutS.flush();
                    BuffOutS.close();
                }
     
                ZipInS.close();
     
            }
    mais celle-ci me renvoie une FileNotFoundException sur la ligne : FileOutputStream FileOutS = new FileOutputStream( ZipEnt.getName() );mais la fonction marche sur des zips sans repertoire

    J'ai donc piquer une source du net pour pouvoir dézipper des archives contenant des repertoires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public void UnZipPerso(String path) {
              try {
                  final int BUFFER = 2048;
                // préparation du zip
                BufferedOutputStream dest = null;
                BufferedInputStream is = null;
                ZipEntry entry;
                ZipFile zipfile = new ZipFile(path);
                Enumeration e = zipfile.entries();
     
                // recharche du nom du zip
                File pathNom = new File(path);
                String nomFichier = pathNom.getName();
                String nom = nomFichier.substring(0, nomFichier.length() - 4);
                //System.out.println(nom);
     
                // création du dossier racine
                File NOM = new File(nom);
                NOM.mkdir();
     
                // URL de base
                String URLbase = "." + "/" + nom ;
     
     
     
                // boucle d'extraction des fichiers
                while (e.hasMoreElements()) {
     
                  // préparation du fichier courant à extraire
                  entry = (ZipEntry) e.nextElement();
                  String url = entry.getName();
                  //System.out.println("Extracting: " + url);
     
                  String URLfichier = URLbase + "/" + url;
                  //System.out.println("URL: " + URLfichier);
     
                  File URL = new File(URLfichier);
     
     
                  if (isFile(URL.getName())) {
                    // écriture du fichier (extraction)
                    is = new BufferedInputStream
                        (zipfile.getInputStream(entry));
                    int count;
                    byte data[] = new byte[BUFFER];
                    FileOutputStream fos = new
                        FileOutputStream(URLfichier);
                    dest = new
                        BufferedOutputStream(fos, BUFFER);
                    while ( (count = is.read(data, 0, BUFFER))
                           != -1) {
                      dest.write(data, 0, count);
                    }
                    dest.flush();
                    dest.close();
                    is.close();
                  }
                  else {
                    // zone répértoire
                    URL.mkdirs();
                  }
     
                }
              }
              catch (Exception e) {
                e.printStackTrace();
              }
     
            }
             private boolean isFile (String nom) 
             {
                     for (int i=nom.length()-1; i>=0; i--) 
                     {
     
                       if (nom.charAt(i) == '.' ) 
                       {
                         return true;
                       }
     
                     }
     
                     return false;
                   }
    }
    et ca me donne la meme exception à la meme instructions :
    java.io.FileNotFoundException: .\Fichiers\Framakey\FramaKiosk\bin\Profiles\default\g3flvb6k.slt\accel.cfg (Le chemin d'accès spécifié est introuvable)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at CZip.UnZipPerso(CZip.java:215)
    at CInterface$1.widgetSelected(CInterface.java:136)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
    at CInterface.main(CInterface.java:80)
    Quelqu'un aurait -il une idée de la facon de procéder pour dézipper une archive contenant des repertoires ?

  2. #2
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    J'avais posté un code sur le fil Page Sources Java libres - participez ici permettant de compresser/décompresser une archive zip (avec répertoires).
    Accès direct ici.

    Enjoy
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/08/2009, 11h41
  2. [VS2008] FileNotFoundException sur ouverture d'un fichier existant
    Par graphicsxp dans le forum Visual Studio
    Réponses: 3
    Dernier message: 04/08/2009, 11h42
  3. java.io.FileNotFoundException sur une dépendance
    Par Paci88 dans le forum Maven
    Réponses: 1
    Dernier message: 02/01/2009, 16h50
  4. problem de compression(zip) d'un fichier sur windows.
    Par timsah dans le forum Autres Logiciels
    Réponses: 14
    Dernier message: 25/10/2005, 13h21
  5. Réponses: 3
    Dernier message: 10/10/2005, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo