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

Java Discussion :

Modifier un fichier MANIFEST.MF dans un programme Java


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut Modifier un fichier MANIFEST.MF dans un programme Java
    Bonjour à tous !

    Comme ne l'indique pas du tout le titre, je voudrais modifier un élément du fichier MANIFEST.MF (le numéro de version) le tout dans un programme java.
    (a si, le titre était bien explicite).

    Donc j'ai essayé en Utilisant la classe Properties, j'ai pu modifier le numéro de version, enregistrer le fichier sauf que (et oui c'était trop beau) le MANIFEST sauvegardé est tout cassé (les informations sont placés n'importe comment) et il est donc inutilisable...

    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
     
    FileInputStream fileInputStream;
    Properties properties;
    try {
    	fileInputStream = new FileInputStream(filePluginPath);
    	//ouvrirFichier() retourne une instance de Properties par rapport au fichier passé en paramètre (ici le MANIFEST)
            properties = ouvrirFichier(filePluginPath);
     
    	//on change le numéro de version
    	properties.setProperty("Bundle-Version",update(number, pattern));
     
    	//Enregistrement du fichier
    	FileOutputStream fileOutputStream = new FileOutputStream(filePluginPath);
    	properties.store(fileOutputStream,null);
     
    } catch (FileNotFoundException e) {
    	e.printStackTrace();
    } catch (IOException e) {
    	e.printStackTrace();
    }
    Conclusion 1 -> faut pas utiliser la classe Porperties pour modifier un fichier MANIFEST

    Conclusion 2 -> Ou alors, je me demerde mal !

    Conclusion 3 -> je sais pas quoi faire maintenant !

    Conclusion 4 -> Heu ... Help ?

    Conclusion 5 -> C'est bon, j'ai plus de conclusion !

    Je me remet donc a vos doigts experts ! (les doigts qui tape sur le clavier ! )

    Merci a tous !
    Alban

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Bon ba j'ai changé de méthode,

    Je lis le fichier MANIFEST.MF ligne par ligne.
    Je recopie le contenu dans un nouveau fichier (MANIFEST.MF.txt).
    Lorsque je tombe sur "Bundle-Version:" je supprime ce qu'il se trouve après et je met le nouveau numéro de version.

    Je supprime l'ancien MANIFEST et renomme MANIFEST.MF.txt en MANIFEST.MF

    voila !

    Voici le code :

    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
    String ligne = "";
    try {
    	BufferedReader  reader = new BufferedReader(new FileReader(filePluginPath));
    	PrintWriter writer = new PrintWriter(new FileWriter(filePluginPath + ".txt"));
    	while((ligne = reader.readLine()) != null){
    		//si la ligne contient "Bundle-Version:"
    		if(ligne.indexOf("Bundle-Version:") != -1){
    		      //on supprime tout ce qui se trouve après "Bundle-Version:"
    		      ligne = ligne.substring(0 , "Bundle-Version:".length());
    		      //on ajoute a la ligne le nouveau numéro de version
    		      ligne += " " + update(number, pattern);
    	        }
    	        //ecriture de la ligne dans le nouveau fichier
    	        writer.println(ligne);
            }
    	//fermeture des flux
    	reader.close();
    	writer.close();
    } catch (FileNotFoundException e) {
    	e.printStackTrace();
    } catch (IOException e) {
    	e.printStackTrace();
    }
    //Suppression de l'ancien fichier MANIFEST
    new File(filePluginPath).delete();
    //Renomage du nouveau MANIFEST
    new File(filePluginPath + ".txt").renameTo(new File(filePluginPath));
    Ici,
    - 'filePluginPath' est mon chemain vers mon fichier MANIFEST.MF
    - la méthode update(number, pattern) change le numéro de version (number) par rapport a un pattern (pattern).

    Voila voila !

    A+
    Alban

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    C'est normal, cette classe ne gère pas l'ordre des propriétés dans le fichier.
    Soit tu code toi-même une surcouche à Properties pour conserver l'ordre de lecture (typiquement utiliser un ArrayList au lieu d'un HashMap) ou alors tu utilises l'API externe commons configuration qui conserve l'ordre. Je l'ai déjà utilisé pour cette raison.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mise à jour fichier de config dans mon programme
    Par peemoney dans le forum Général Java
    Réponses: 5
    Dernier message: 01/10/2012, 14h51
  2. Réponses: 5
    Dernier message: 18/10/2009, 13h42
  3. modifier des fichiers Excel compris dans un jar
    Par soulspeace dans le forum Eclipse
    Réponses: 1
    Dernier message: 24/06/2009, 10h28
  4. DataSource dans un programme java
    Par soumou dans le forum JDBC
    Réponses: 1
    Dernier message: 28/11/2006, 11h44
  5. Réponses: 5
    Dernier message: 16/03/2006, 00h37

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