Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fichier properties

4 réponses
Avatar
Informatique CARPIMKO
Bonjour,
j'aimerais utiliser un fichier properties qui est stocké sur le réseau.
J'ai une classe de connexion à une base de données qui fonctionne comme
cela:

public class ConnectionBDD {
public static Connection getConnexion() throws Exception {
Hashmap pc = parametresConnection();
Class.forname("com.microsoft...");
try {
Connection cnx =
DriverManager.getConnection("jdbc://microsoft...");
} catch (Exception e) {
}
return cnx;
}

public static Hashmap parametresConnection() throws Exception {
ResourceBundle rb = ResourceBundle.getBundle("parametresJDBC");
HashMap parametres = new HashMap();
for (...) {}
return parametres;
}
}

Cela fonctionne très bien lorsque mon fichier properties est dans mon
répertoire source mais j'aimerais pouvoir modifier mes 2 méthodes en :
public static Connection getConnexion(String fichierProperties)
public static Hashmap parametresConnection(String fichierProperties)

et pouvoir lui indiquer C:\rep\parametresJDBC.properties (disque local) ou
E:\rep\parametresJDBC.properties , \\serveur\rep\parametresJDBC.properties
(disque reseau)
J'ai bien essayé de rajouter -classpath \\serveur\rep\ mais ca ne marche
pas. Est-ce que c'est possible ? ou une autre solution qui me permettrait de
faire la même chose.
Merci d'avance.
Yannick

4 réponses

Avatar
Insitu
"Informatique CARPIMKO" writes:


et pouvoir lui indiquer C:repparametresJDBC.properties (disque local) ou
E:repparametresJDBC.properties , serveurrepparametresJDBC.properties
(disque reseau)
J'ai bien essayé de rajouter -classpath serveurrep mais ca ne marche
pas. Est-ce que c'est possible ? ou une autre solution qui me permettrait de
faire la même chose.


En utilisant la classe URL ? Pour faire vite:

java.net.URL res = new URL("\serveurrepparametresJDBC.properties");
InputStream is = res.openStream();
Properties props = new Properties().load(is);


HTH

insitu.

Avatar
Informatique CARPIMKO
Merci.
Je venais de trouver ça (qui fonctionne) et je voulais avoir votre avis.
Du coup, quelle est la meilleure solution entre les 2 ? fileinputstream ou
url ?

FileInputStream fis = new FileInputStream(fichier);
// avec fichier = "\serveurrepparametresJDBC.properties";
Properties p = new Properties();
p.load(fis);


"Insitu" a écrit dans le message de news:

"Informatique CARPIMKO" writes:


et pouvoir lui indiquer C:repparametresJDBC.properties (disque local)
ou
E:repparametresJDBC.properties ,
serveurrepparametresJDBC.properties
(disque reseau)
J'ai bien essayé de rajouter -classpath serveurrep mais ca ne marche
pas. Est-ce que c'est possible ? ou une autre solution qui me permettrait
de
faire la même chose.


En utilisant la classe URL ? Pour faire vite:

java.net.URL res = new
URL("\serveurrepparametresJDBC.properties");
InputStream is = res.openStream();
Properties props = new Properties().load(is);


HTH

insitu.



Avatar
Insitu
"Informatique CARPIMKO" writes:

Merci.
Je venais de trouver ça (qui fonctionne) et je voulais avoir votre avis.
Du coup, quelle est la meilleure solution entre les 2 ? fileinputstream ou
url ?


FileInputStream ne fonctionnera qu'avec des File, comme son nom
l'indique. L'utilisation d'URL est plus générale : il suffit
généralement d'avoir la bibliothèque qui va bien pour avoir
gratuitement un provider pour des URL exotiques. Au besoin,
l'écriture d'un URLProvider n'est pas très complexe.

Tout dépend du contexte d'utilisation...


insitu.

Avatar
Mike Baroukh
Bonjour.

L'utilisation de URL devrait fonctionner, tant qu'on est dans un
environnement windows.
Si besoin est, il est aussi possible d'utiliser jCifs
(http://jcifs.samba.org/) pour faire directement des accés voisinage
réseau ...

Au passage, si je peux me permettre,
public static Hashmap parametresConnection() throws Exception {
devrait être
public static Map parametresConnection() throws Exception {

c'est à dire que le type de retour devrait être l'interface Map et non
l'implémentation HashMap ...

Mike

"Informatique CARPIMKO" writes:

et pouvoir lui indiquer C:repparametresJDBC.properties (disque local) ou
E:repparametresJDBC.properties , serveurrepparametresJDBC.properties
(disque reseau)
J'ai bien essayé de rajouter -classpath serveurrep mais ca ne marche
pas. Est-ce que c'est possible ? ou une autre solution qui me permettrait de
faire la même chose.


En utilisant la classe URL ? Pour faire vite:

java.net.URL res = new URL("\serveurrepparametresJDBC.properties");
InputStream is = res.openStream();
Properties props = new Properties().load(is);


HTH

insitu.