Aller au contenu
Menu
  • Expert TIBCO
  • Cas d’étude
  • Tutoriels Vidéo
  • Download
  • IA génératives
    • Styles d’images générées IA
  • Rechercher
  • Expert TIBCO
  • Cas d’étude
  • Tutoriels Vidéo
  • Download
  • IA génératives
    • Styles d’images générées IA

MIAFFO.NET

Expert TIBCO ESB - TUTORIELS ESB | Formations ESB | Architecture SOA | Supervision fonctionnelle et technique des flux ESB

Code Java pour zip répertoire – TIBCO BW5

Post Views: 2

Ce code Java doit être intégré directement dans une activité Java Code dans TIBCO BusinessWorks (ce code a été testé sur TIBCO BW 5 contenant une jre 1.8). Il permet de :

  • Créer une archive ZIP à partir d’un dossier source
  • Choisir un répertoire de sortie différent
  • Filtrer les fichiers par extension
  • Inclure ou non les sous-dossiers
  • Générer un nom de fichier ZIP dynamique

Paramètres d’entrée

NomTypeObligatoireDescription
dossierPathStringOuiChemin du répertoire à zipper
repertoireSortieStringOuiRépertoire où le fichier ZIP sera créé
InclureSousDossiersBooleanOuiInclut récursivement les sous-dossiers si vrai
extensionIncluseStringNonFiltre par extension (ex. .txt, .xml). Par défaut le code prend tous les fichiers si non précisé.

Paramètres de sortie

NomTypeDescription
zipStatusString« Succès », « Erreur » ou « Aucun fichier »
zipPathStringChemin absolu du fichier ZIP généré
errorMessageStringDétail de l’erreur en cas d’échec

Fonctionnement

  1. Vérifie les répertoires source et de sortie
  2. Génère un fichier ZIP nommé archive_YYYYMMDD_HHmmss.zip
  3. Parcourt les fichiers du dossier source (récursivement si indiqué avec le paramètre InclureSousDossiers)
  4. Filtre les fichiers selon l’extension si précisé
  5. Ajoute tous les fichiers à plat dans le ZIP (sans structure de dossiers)
  6. Exclut automatiquement le ZIP en cours de création

Points d’attention

  • Les fichiers du même nom issus de dossiers différents écrasent les précédents dans le ZIP
  • Le fichier ZIP généré n’est jamais inclus dans lui-même
  • L’extension doit inclure le point (ex. .txt)
  • Le code ne conserve ni les métadonnées ni les droits des fichiers

Limites

  • Pas de détection de doublons ou renommage automatique
  • Le ZIP est remplacé s’il existe déjà avec le même nom
  • Pas de compression multi-thread (standard Java 8)

Exemple d’exécution

dossierPath        = /dmi/esb/principal
repertoireSortie   = /dmi/esb/out
InclureSousDossiers = true
extensionIncluse   = 

archive_20251112_154512.zip
Contient tous les fichiers  de /dmi/esb/principal et ses sous-dossiers

Note: Si vous exécutez ce code dans un contexte entreprise, c’est à vous de vérifier son bon fonctionnement et les attendus. Je ne suis en aucun cas responsable de ce que vous en faites.

/* Available Variables: DO NOT MODIFY
	In  : String extensionIncluse
	In  : String dossierPath
	In  : boolean InclureSousDossiers
	In  : String repertoireSortie
	Out : String zipStatus
	Out : String zipPath
	Out : String errorMessage
* Available Variables: DO NOT MODIFY *****/
// Entrée : dossierPath (String) à mapper depuis BW

// Vérifier le dossier
java.io.File dossier = new java.io.File(dossierPath);
if (!dossier.exists() || !dossier.isDirectory()) {
    throw new IllegalArgumentException("Le chemin source n'est pas un dossier valide : " + dossierPath);
}

//vériier le répertoire de sortie
java.io.File repSortie = new java.io.File(repertoireSortie);
if (!repSortie.exists() || !repSortie.isDirectory()) {
    throw new IllegalArgumentException("Le répertoire de sortie n'est pas valide : " + repertoireSortie);
}

// Nom du fichier ZIP dynamique
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyyMMdd_HHmmss");
String nomZip = "archive_" + sdf.format(new java.util.Date()) + ".zip";
java.io.File fichierZip = new java.io.File(repSortie, nomZip);

try (
    java.io.FileOutputStream fos = new java.io.FileOutputStream(fichierZip);
    java.util.zip.ZipOutputStream zos = new java.util.zip.ZipOutputStream(fos)
) {
    boolean contenuAjoute = false;

    if (InclureSousDossiers) {
        java.util.Stack<java.io.File> pile = new java.util.Stack<java.io.File>();
        pile.push(dossier);

        while (!pile.isEmpty()) {
            java.io.File courant = pile.pop();
            java.io.File[] fichiers = courant.listFiles();

            if (fichiers == null) continue;

            for (java.io.File fichier : fichiers) {
                // Ne pas ajouter le fichier ZIP lui-même
                if (fichier.equals(fichierZip)) {
                    continue;
                }

                if (fichier.isDirectory()) {
                    pile.push(fichier);
                    continue;
                }

                if (extensionIncluse != null && !extensionIncluse.trim().isEmpty()) {
                    if (!fichier.getName().toLowerCase().endsWith(extensionIncluse.toLowerCase())) {
                        continue;
                    }
                }

                java.io.FileInputStream fis = new java.io.FileInputStream(fichier);
                java.util.zip.ZipEntry entree = new java.util.zip.ZipEntry(fichier.getName()); // à plat
                zos.putNextEntry(entree);

                byte[] buffer = new byte[1024];
                int longueur;
                while ((longueur = fis.read(buffer)) > 0) {
                    zos.write(buffer, 0, longueur);
                }

                zos.closeEntry();
                fis.close();
                contenuAjoute = true;
            }
        }

    } else {
        java.io.File[] fichiers = dossier.listFiles(new java.io.FileFilter() {
            public boolean accept(java.io.File file) {
                return file.isFile();
            }
        });

        if (fichiers != null) {
            for (java.io.File fichier : fichiers) {
                if (fichier.equals(fichierZip)) {
                    continue;
                }

                if (extensionIncluse != null && !extensionIncluse.trim().isEmpty()) {
                    if (!fichier.getName().toLowerCase().endsWith(extensionIncluse.toLowerCase())) {
                        continue;
                    }
                }

                java.io.FileInputStream fis = new java.io.FileInputStream(fichier);
                java.util.zip.ZipEntry entree = new java.util.zip.ZipEntry(fichier.getName());
                zos.putNextEntry(entree);

                byte[] buffer = new byte[1024];
                int longueur;
                while ((longueur = fis.read(buffer)) > 0) {
                    zos.write(buffer, 0, longueur);
                }

                zos.closeEntry();
                fis.close();
                contenuAjoute = true;
            }
        }
    }

    if (contenuAjoute) {
        zipStatus = "Succès";
        zipPath = fichierZip.getAbsolutePath();
    } else {
        zipStatus = "Aucun fichier";
        fichierZip.delete();
    }

} catch (java.io.IOException e) {
    zipStatus = "Erreur";
    errorMessage = e.getMessage();
    e.printStackTrace();
}

// Variables de sortie (captées automatiquement par BW)
zipStatus = zipStatus;
zipPath = zipPath;
errorMessage = errorMessage;

Téléchargez le Projet pour BW5 (à la demande)

Voici la version 2

/* Available Variables: DO NOT MODIFY
	In  : String extensionIncluse
	In  : String dossierPath
	In  : boolean InclureSousDossiers
	In  : String repertoireSortie
	Out : String zipStatus
	Out : String zipPath
	Out : String errorMessage
* Available Variables: DO NOT MODIFY *****/
// Entrée : dossierPath (String) à mapper depuis BW

// Initialisation des répertoires
java.io.File dossier = new java.io.File(dossierPath);
java.io.File repSortie = new java.io.File(repertoireSortie);

if (!dossier.exists() || !dossier.isDirectory()) {
    throw new IllegalArgumentException("Le chemin source n'est pas un dossier valide : " + dossierPath);
}
if (!repSortie.exists() || !repSortie.isDirectory()) {
    throw new IllegalArgumentException("Le répertoire de sortie n'est pas valide : " + repertoireSortie);
}

// Création du ZIP
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyyMMdd_HHmmss");
String nomZip = "archive_" + sdf.format(new java.util.Date()) + ".zip";
java.io.File fichierZip = new java.io.File(repSortie, nomZip);

try (
    java.io.FileOutputStream fos = new java.io.FileOutputStream(fichierZip);
    java.util.zip.ZipOutputStream zos = new java.util.zip.ZipOutputStream(fos)
) {
    boolean contenuAjoute = false;

    java.util.Stack&lt;java.io.File> pile = new java.util.Stack&lt;java.io.File>();
    pile.push(dossier);

    while (!pile.isEmpty()) {
        java.io.File courant = pile.pop();
        java.io.File[] fichiers = courant.listFiles();

        if (fichiers == null) continue;

        for (java.io.File fichier : fichiers) {
            if (fichier.equals(fichierZip)) continue; // Ne pas inclure le ZIP lui-même

            if (fichier.isDirectory()) {
                pile.push(fichier);
            } else {
                if (extensionIncluse != null &amp;&amp; !extensionIncluse.trim().isEmpty()) {
                    if (!fichier.getName().toLowerCase().endsWith(extensionIncluse.toLowerCase())) {
                        continue;
                    }
                }

                // Chemin relatif pour conserver l'arborescence
                String cheminRelatif = dossier.toURI().relativize(fichier.toURI()).getPath();

                java.io.FileInputStream fis = new java.io.FileInputStream(fichier);
                java.util.zip.ZipEntry entree = new java.util.zip.ZipEntry(cheminRelatif);
                zos.putNextEntry(entree);

                byte[] buffer = new byte[1024];
                int longueur;
                while ((longueur = fis.read(buffer)) > 0) {
                    zos.write(buffer, 0, longueur);
                }

                zos.closeEntry();
                fis.close();
                contenuAjoute = true;
            }
        }
    }

    if (contenuAjoute) {
        zipStatus = "Succès";
        zipPath = fichierZip.getAbsolutePath();
    } else {
        zipStatus = "Aucun fichier";
        fichierZip.delete();
    }

} catch (java.io.IOException e) {
    zipStatus = "Erreur";
    errorMessage = e.getMessage();
    e.printStackTrace();
}

// Sorties TIBCO (automatiques si même nom dans l'onglet Output)
zipStatus = zipStatus;
zipPath = zipPath;
errorMessage = errorMessage;

Sur ce site, je te fais gagner certainement un temps précieux.
Tu peux me retrouver également sur :

Linkedin
YouTube

TAGS

ActiveMQ (1) Automatisation (2) Base de données (1) Broker (1) BusinessWorks 5 (1) BusinessWorks 6 (5) BW6 (5) Debug (1) Download (1) EMS (1) ESB (11) git (1) Ingénieur Système (1) Intégration (1) Intégration continue (4) JAVA (1) Jconsole (1) MOM (1) openssl (1) Oracle (1) ParseData (1) postgresql (1) REST (1) RESTfull (1) SOA (2) Supervision (1) Sécurité (2) Talend (2) Tests unitaires (1) TIBCO (3) Tibco 5 Installation (1) TIBCo BusinessWorks 6 (1) TIBCO BW5 (11) TIBCO BW6 (15) TIBCO EMS (2) TIBCO ESB (14) VirtualBox (1) Virtualisation (1) VisualVM (1) Web services (1)

Statistiques

271377
This Month : 1503
Total Users : 271377
Total views : 735648
Who's Online : 3
Your IP Address : 18.97.14.80
Server Time : 2025-12-07

Articles récents

  • Mise en place d’un Bridge avec TIBCO EMS : guide complet
  • TIBCO ESB : comprendre les activités JMS et les patterns synchrones
  • Protégé : 100 commandes git et j’utilise que 5%
  • PKI et certificats X.509 : comprendre et manipuler avec OpenSSL
  • Activer le Mode Plein Écran sur CentOS dans VirtualBox : Guide Complet
  • Sécuriser l’accès à la console TIBCO Administrator par HTTPS
  • Mise en place de la tolérance aux pannes sur TIBCO BW6
  • Mettre en place un système de rejeu avec TIBCO EMS
  • Découvrez chaque semaine une nouvelle vidéo YouTube.
  • JMX – TIBCO BusinessWorks 6 monitoring – Installer et Configurer Java VisualVM

Les 6 posts les plus consultés

  • Expert TIBCO (33 447)
  • Télécharger et Installer Eclipse IDE – prise en main (9 502)
  • Installer Centos 7 et 8 pas à pas (7 856)
  • Styles d’images générées IA (7 094)
  • Installation des produits TIBCO BusinessWorks 5 – Partie 2 (6 260)
  • Installer et configurer ActiveMQ (6 023)

Commentaires récents

  • Jean Nguz dans 50 prompts parfaits prêts à l’emploi à copier coller pour dompter toutes les IA
  • kellyAbrah dans Installer et configurer ActiveMQ
  • Васnn dans Développer et sécuriser une API REST TIBCO BusinessWorks 5
  • Павел dans Installer, configurer et développer son premier Job Talend avec TOS for ESB
  • CABIDO066 dans Installer la base de données Oracle 18 c

Sujets traités

  • ActiveMQ
  • Bases de données
  • BW6
  • Consultant
  • EMS
  • ESB
  • Intégration continue
  • Java
  • LINUX
  • Non classé
  • Oracle
  • PostgreSQL
  • SECURITÉ
  • SOA
  • Supervision
  • Talend
  • TIBCO
  • TIBCO ActiveMatrix BusinessWorks 5
  • VIDEO
  • Virtualisation
  • VM
  • Expert TIBCO
  • Cas d’étude
  • Tutoriels Vidéo
  • Download
  • IA génératives
    • Styles d’images générées IA

Copyright 2025 © MIAFFO.NET Tous droits réservés.

Thème Codilight par FameThemes