didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
14 juin 2006 à 13:42
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 2017
-
17 juin 2006 à 14:05
Bonjour.
au jour d'aujourd'hui, je sais ouvrir un fichier que ce soit du texte, des symboles ou autre.
maitenant, j'ai fais un petit fichier texte qui contien ceci :
"00000001 = JB
00000010 = Michel
00000011 = Robert "
j'aimerais savoir comment est ce que je peut faire pour si par exemple l'utilisatseur tape "00000001" l'ordi m'affiche a l'ecran le nom de la personne a qui cela correspond (ici JB).
merci je bloque dessus depuis un bout de temps
cs_kakol
Messages postés180Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention12 juin 2008 14 juin 2006 à 13:52
tu pourrais utiliser pour cela un fichier properties que tu nomme par exemple corespnoms.properties
Ce fichier est comme un fichier texte dans lequel tu écris
00000001 = JB
00000010 = Michel
00000011 = Robert
Pour appeler tes variables tu utilise alors l'objet ResourceBundle
ResourceBundle RB = ResourceBundle.getBundle("corespnoms.properties"
);
String nom = RB.getString("00000001");
par exemple cela récupère JB.
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 14 juin 2006 à 14:37
j'ai tester le bout de code que voici:
import java.io.*;
import java.util.*;
public class recup_donnees{
public static void main(String arg[]){
ResourceBundle RB = ResourceBundle.getBundle("corespnoms.properties");
String nom = RB.getString("00000001");
System.out.println(" 00000001 = "+nom);
}
dans mon fichier "corespnoms.properties" j'ai
00000001 = JB
00000010 = Michel
00000011 = Robert
et lors de l'execution , dans ma fenetre DOS, j'obtient
Exception in thread "main" java.util.MissingResourceException: Can't find bundle
for base name corespnoms.properties, locale fr_FR
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle
.java:837)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:806)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:550)
at recup_donnees.main(recup_donnees.java:6)
Ou sinon lorsque je change le code comme ceci
import java.io.*;
import java.util.*;
public class recup_donnees{
public static void main(String arg[]){
try{
ResourceBundle RB = ResourceBundle.getBundle("corespnoms.properties");
String nom = RB.getString("00000001");
System.out.println(" 00000001 = "+nom);
}catch (Exception e){
System.out.println("Une erreur c'est produite...");
}
}
}
avec, toujours, les meme donnees dans le fichier
j'obtient "Une erreur c'est produite"
je ne comprend pas si le probleme vient du code ou du fichier ou d'autre chose ??
merci a toi
cs_kakol
Messages postés180Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention12 juin 2008 14 juin 2006 à 15:03
salut,
ton problème ne viens pas de ton fichier car ce que tu as mis dedans m'a l'air correct.
Je pense que le problème viens du fait qu'il n'arrive pas à trouver ton fichier.
Pour mettre ResourceBundle RB = ResourceBundle.getBundle("corespnoms.properties");
il faut que ton fichier se trouve à la racine de ton projet.
Sinon à la place de corespnoms.properties il faudra lui mettre le chemin jusqu'au fichier.
Essaie en mettant ton fichier properties à la racine de ton projet et tiens moi aucourant.
Il ne devrait pas y avoir de soucis car moi j'utilise souvent ResourceBundle et ça marche très bien.
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 14 juin 2006 à 15:16
C'est le cas, j'ai creer un dossier "NOM TEST" dans le quel sont placer mon fichier, mon projet et ma class.
j'ai aussi essayer en lui donnant le chemin complet mais il y a toujours une erreur.
PS: pour le chemin du fichier je fais "H:\\NOM TEST\\corespnoms.properties"
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 14 juin 2006 à 15:50
Non j'ai toujours et encore "Une erreur c'est produite".
Mais comment tu le present chez to, tu as dis que tu t'en servais souvent, peut tu me montrer un de tes programmes où tu t'en sert.
cs_kakol
Messages postés180Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention12 juin 2008 14 juin 2006 à 16:03
j'ai essayé le code que tu as mis plus haut et chez moi ça marche nickel.
J'ai donc dans le dossier de mon projet mon fichier corespnoms.properties avec dedans :
00000001 = JB
00000010 = Michel
00000011 = Robert
puis ma classe recup_donnees.java :
import java.io.*;
cs_kakol
Messages postés180Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention12 juin 2008 14 juin 2006 à 16:16
Sheorogath : oui pour la lecture je pense que c à peu près équivalent d'utiliser la classe Property ou la classe ResourceBundle.
Avec Property tu ouvre le fichier en lecture avec InputStream et tu récupère la valeur de ta clé.
Le ResourceBundle récupère également le valeur de la clé désirée. Par contre un RsourceBundle ne pemet pas d'écrire dans un fichier.
En fait ResourceBundle est surtout utilisé pour l'internationalisation et c un objet pratique et rapide pour récupérer les valeurs des clés d'un fichier properties.
Par contre pour écrire dans un fichier properties ou le mettre à jour il faut utiliser ta méthode obligatoirement.
sheorogath
Messages postés2448Date d'inscriptionsamedi 21 février 2004StatutModérateurDernière intervention29 janvier 201017 14 juin 2006 à 16:19
ok
pour la lecture j'avais oublié cette mthode qui est un peu plus rapide que la mienne (a coder apres je ne sais aps ca doit pas se voir la difference)
mais attendons donc ce que repond l'interressé
"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 15 juin 2006 à 14:14
j'ai repris texto ton code avec le "e.printStackTrace();".
Donc le detaille de l'erreur c'est
java.util.MissingResourceException: Can't find bundle for base name corespnoms,
locale fr_FR
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle
.java:837)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:806)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:550)
at recup_donnees.main(recup_donnees.java:6)
a titre informatif, j'ai un JDK 1.5.0 et JCreator comme editeur java.
merci.
cs_kakol
Messages postés180Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention12 juin 2008 15 juin 2006 à 15:07
ok.
donc le problème viens peut etre de l'objet Locale (c'est l'objet qu'utilise le ResourceBundle pour connaitre la langue) qui ne doit pas être définie par défaut.
essaie peut etre soit en nommant ton fichier corespnoms_fr_FR.properties ou sinon en mettant
Locale loc = "fr_FR";
ResourceBundle.getBundle(
"corespnoms", loc);
je ne sais pas si ça va marcher mais on peut toujours essayer.
didoux95
Messages postés845Date d'inscriptionmardi 25 avril 2006StatutMembreDernière intervention 1 août 20172 17 juin 2006 à 14:05
je vous remerci mais c'est bon j'ai trouver une methode (RandomAccessFile).
mis une derniere chose si je configuer l'acces a mon fichier en mode "rw" comment est ce que je peux effacer tous ce qu'il contient de maniere a y ecrir de nouvelles informations?
merci.
mon code (sans le mode "rw"):
import java.io.*;
import java.io.RandomAccessFile;
public class recup_donnees{
public static void main(String arg[]){
BufferedReader IN=null;
try{
IN=new BufferedReader(new InputStreamReader(System.in));
}catch (Exception e){}
//Saise du numero identifiant
boolean OK=false;
String Numero1="";
while(! OK){
System.out.println("Entrez le numero identifiant vous correspondant ");
try{
Numero1=IN.readLine();
OK=true;
}catch (Exception e){}
}
//traitement des donnees et traitement du fichier "correspnoms.txt"
try{
RandomAccessFile file=new RandomAccessFile("corespnoms.txt","r");
long Longueur=file.length();
long filePointer=0;
while(filePointer<Longueur){
String Ligne=file.readLine();
String Numero2=Ligne.substring(0,8);
if (Numero2.equals(Numero1)){
String Nom=Ligne.substring(11);
System.out.println("Le nom correspondant a "+Numero1+" est "+Nom+"\n");
}
}
file.close();
}catch (Exception e){}
}
}