Les Allergies
Alimentaires
Posez votre question Signaler

[java] générer un fichier .properties

kifouillou 128Messages postés 4 novembre 2005Date d'inscription 28 janvier 2011Dernière intervention - Dernière réponse le 1 avril 2011 à 13:22
Bonjour,
je voudrais créer un fichier .properties.
Connaissez-vous des cours ou tutoriels ou exemple dessus? Car je n'en ai encore jamais réalisé.
Merci d'avance.
Lire la suite 

[java] générer un fichier .properties »

7 réponses
Réponse
+18
moins plus
Salut Kifouillou!

Tu trouveras ci-dessous une petite démo qui te montre comment créer un fichier Properties, comment y insérer des valeurs, comment stocker ce fichier sur disque, comment charger un fichier Properties depuis le disque et comment afficher le contenu.


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

/*
 * Created on Jan 24, 2007
 *
 */

public class PropertiesDemo {

	public PropertiesDemo() {
		super();
	}

	
	/**
	 * Cette méthode stocke le fichier Properties à l'emplacement spécifié
	 * 
	 * @param props Le fichier à stocker
	 * @param fileLocation L'emplacement où le fichier doit être stocké
	 * @param comments Commentaires à insérer en tête du fichier
	 * @throws FileNotFoundException
	 * @throws IOException si une erreur est survenue lors de l'écriture du fichier
	 */
	public void saveProperties(Properties props, String fileLocation, String comments) throws FileNotFoundException,
			IOException {
		OutputStream out = new FileOutputStream(fileLocation);
		props.store(out, comments);
		out.flush();
		out.close();
	}

	
	/**
	 * Cette méthode lit un fichier Properties à l'emplacement spécifié
	 * 
	 * @param propertiesFileLocation L'emplacemnt du fichier
	 * @return Le fichier Properties chargé
	 * @throws FileNotFoundException si le fichier n'a pas été trouvé
	 * @throws IOException si une erreur est survenue durant la lecture
	 */
	public Properties loadProperties(String propertiesFileLocation) throws FileNotFoundException, IOException {
		Properties props = new Properties();
		props.load(new FileInputStream(propertiesFileLocation));
		return props;
	}

	
	/**
	 * 
	 * Cette méthode affiche cahque paire [clé,valuer] d'un fichier Properties
	 * 
	 * @param props Le fichier à afficher
	 */
	public void displayProperties(Properties props) {
		Iterator it = props.keySet().iterator();
		while (it.hasNext()) {
			String propertyName = (String) it.next();
			String propertyValue = props.getProperty(propertyName);
			System.out.println(propertyName + "=" + propertyValue);
		}
	}

	/**
	 * Cette méthode permet de démarrer la démo.
	 * 
	 * On y crée un fichier Properties que l'on remplitavec des paires [clé,valeur]
	 * puis on le stocke sur le disque. Ensuite on le re depuis le disaue et, enfin,
	 * son contenu est affiché.
	 * 
	 * @param args non utilsé
	 */
	public static void main(String[] args) {
		PropertiesDemo demo = new PropertiesDemo();

		//Emplacement où sera stocké le fichier
		String propertiesFileLocation = "d:/myProperties.properties";
		
		//On instancie un nouvel objet Properties
		Properties myProps = new Properties();
		//On y insère des paires [clé,valeur]
		myProps.setProperty("user.name","HackTrack");
		myProps.setProperty("os.name","Linux");
		myProps.setProperty("java.ide","Eclipse3.2");
		myProps.setProperty("java.applicationserver.name","JBoss AS");
		myProps.setProperty("java.applicationserver.version","4.0.5");
		myProps.setProperty("user.function","Developer");
		myProps.setProperty("user.age","You are too curious!");
		
		try {
			//On stocke le fichier sur le disque
			demo.saveProperties(myProps, propertiesFileLocation, "This is a demo on Properties by HackTrack");
			//On crée un nouvel objet Properties en lisant le fichier sur le disque
			Properties loadedProps = demo.loadProperties(propertiesFileLocation);
			//On affiche le contenu du fichier
			demo.displayProperties(loadedProps);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


;-)
HackTrack
kifouillou- 24 janv. 2007 à 17:20
Yop,

j'ai donc fais un copier coller de la démodans un document text.
J'ai créé un fichier dont le nom est décrit dans la démo.
J'ai fait un petit F5 mais il n' y a rien qui se passe. Mon fichier properties est toujours vide. Ais-je fais une manip à l'envers?
kij_82- 24 janv. 2007 à 17:24
lol,

Le code donné correspond à une classe Java qui te permet de sauvergarder un objet Property dans un fichier de type properties.
Il te faut donc insèrer cette classe dans ton projet java, et l'utiliser pour pouvoir sauvegarder tes infos.
Ajouter un commentaire
Réponse
+1
moins plus
Salut!

Tu dois créer une classe qui s'appelle PropertiesDemo (en respectant la casse) dans ton projet.

Tu effectues un copier-coller du code ci-dessus.

Tu compiles ta classe.

Tu la testes.

;-)
HackTrack
kifouillou- 14 févr. 2007 à 14:33
Salut Hack,

j'ai une classe qui me permet d'ouvrir, de lire et de fermer un fichier properties.
public class FichierPropertiesGenerique {

	private Properties prop;
	private FileInputStream in;
	private String fichierProperties;

	public String getFichierProperties() {
		return fichierProperties;
	}

	public void setFichierProperties(String fichierProperties) {
		this.fichierProperties = fichierProperties;
	}

	/**
	 * Cette méthode ouvre le fichier properties, si l'opération est réussie
	 * alors elle retourne vrai sinon elle retourne faux.
	 */
	public boolean ouvrirFichierProperties(String fichierProperties) {

		boolean ResultOK;
		prop = new Properties();

		try {
			in = new FileInputStream(fichierProperties);
			prop.load(in);
			ResultOK = true;

		} catch (Throwable e) {

			ResultOK = false;

		}

		return ResultOK;
	}

	/**
	 * cette méthode retourne la valeur qui correspond à la clé passée en paramètre
	 * Si la clé n'est pas trouvé la méthode renvoie une chaîne vide.
	 */
	public String lireValeur(String cle) {
		if (prop != null) {
			String Valeur = prop.getProperty(cle, "");
			return Valeur;
		} else {
			return "";
		}
	}

	public void fermerFichier() throws Throwable {

		in.close();

	}
}


et j'ai une autre classe qui appelle cette classe et normalement sa devrait me retourner la valeur d'un chemin qui se trouve dans mon fichier properties:
public class FichierPropertiesPromotelec {

	private Properties prop;
	private String monFichier;
	private String monRepertoire; 

	public  void init(){
			
			monRepertoire = prop.getProperty("repertoireEchange");
			monFichier = "C:\\Temp\\promo_act.properties";
			
}
					
	
	public String RecupererRepertoire() throws Throwable {

		FichierPropertiesGenerique fichier = new FichierPropertiesGenerique();
		fichier.ouvrirFichierProperties(getMonFichier());
		fichier.lireValeur(getMonRepertoire());
		fichier.fermerFichier();
		System.out.println(getMonRepertoire());
		return getMonRepertoire();

	}

	public String getMonFichier() {
		
		return monFichier;
	}

	public void setMonFichier(String monFichier) {
		
		this.monFichier = monFichier;
	}

	public String getMonRepertoire() {
		
		return monRepertoire;
	}

	public void setMonRepertoire(String monRepertoire) {
		
		this.monRepertoire = monRepertoire;
	}

}


Le problème c'est que prop n'est pas initialisé et je pense que c'est pour sa que j'ai une erreur du style :
java.lang.NullPointerException


Est-ce que quelqu'un aurait une idée pour pallier à mon problème?
Ajouter un commentaire
Réponse
+0
moins plus
Bon pour résumer,

j'ai créé une classe dans mon projet. Donc sa me fait un nomClasse.java.
Ensuite recopié le code donné dans cette classe. Je lance mon projet, sa l'exécute. Mais mon fichier est toujours vide. Faut-il que le code du fichier properties soit en raccord avec le projet en lui-meme?
kifach - 1 avril 2011 à 13:22
merci pour cette demo
Ajouter un commentaire
Ce document intitulé « [java] générer un fichier .properties » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?