Fichier texte

didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 - 14 juin 2006 à 13:42
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Derniè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

19 réponses

cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 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.

voila. n'hésite pas pour plus d'inormations.

***  Kakol ***
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
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
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 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.

***  Kakol ***
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008
14 juin 2006 à 15:04
aussi un truc bete mais pense à ajouter :
import java.util.ResourceBundle;

***  Kakol ***
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
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"

je ne comprend pas comment
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 juin 2008
14 juin 2006 à 15:39
je crois que j'ai trouvé.
il faut que tu mette ResourceBundle RB = ResourceBundle.getBundle("corespnoms");
fais un test

***  Kakol ***
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
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.

merci
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
14 juin 2006 à 16:00
exemple d'ecriture :
 protected void writeOPt() throws IOException {
  Properties saveSetting = new Properties();
  if (crypt.isSelected()) {
   settingsCrypt = "true";
  } else {
   settingsCrypt = "false";
  }
  saveSetting.put("cryptage", settingsCrypt);


  if (openDefaultFtp.isSelected()) {
   settingopenDefaultFtp = "true";


  } else {
   settingopenDefaultFtp = "false";
  }
  saveSetting.put("ftp", settingopenDefaultFtp);
  saveSetting.put("UrldFtp", ftpDefault.getText());


  if (confirmdelet.isSelected()) {
   settingconfirmdelet = "true";


  } else {
   settingconfirmdelet = "false";
  }
  saveSetting.put("suppression", settingconfirmdelet);
  if (confirmreplace.isSelected()) {
   settingconfirmreplace = "true";


  } else {
   settingconfirmreplace = "false";
  }
  saveSetting.put("remplacement", settingconfirmreplace);
  FileOutputStream setting = new FileOutputStream(
    "FTPproperties.properties");
  saveSetting.store(setting, "option du programme");
 }

exemple de lecture :

FileInputStream inSetting = new FileInputStream(
    "FTPproperties.properties");
  Properties defaultSetting = new Properties();
  defaultSetting.load(inSetting);
  /** *** recuperation des different parametre **** */
  boolcrypt = defaultSetting.getProperty("cryptage");
  boolopenDefaultFtp = defaultSetting.getProperty("ftp");
  boolconfirmdelet = defaultSetting.getProperty("suppression");
  boolconfirmreplace = defaultSetting.getProperty("remplacement");

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 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.*;

import java.util.*;

public
class recup_donnees{

public
static
void main(String arg[]){
try{
ResourceBundle RB = ResourceBundle.getBundle(
"corespnoms");
String nom = RB.getString(
"00000001");
System.out.println(
" 00000001 = "+nom);
}
catch (Exception e) {
e.printStackTrace();
}

}
}

et il m'affiche dans la console : 00000001 = JB


donc là je ne vois pas du tout d'où viens le problème.
met un e.printStrackTrace() pour voir le détail de l'erreur.




***  Kakol ***
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
14 juin 2006 à 16:05
nos deux code sont equivalent kakol ?

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 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.

***  Kakol ***
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
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"
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
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.
0
cs_kakol Messages postés 180 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 12 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.

***  Kakol ***
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
15 juin 2006 à 15:09
si j'etais toi avant :
tu fais:
System.out.println(new File("path de ton fichier que ta enté").exists());
et tu nous dit ce que ca t'affiche

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
16 juin 2006 à 17:33
j'ai tester et cela m'affiche une seul chose "true"
donc je pense que le fichier existe bien et que le programme arrive a le lire.
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
16 juin 2006 à 17:34
ouais
tu n'as plus qu'as utiliser ma methode :p

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
16 juin 2006 à 17:39
je veux bien utiliser ta methode seulement je n'y comprend rien ou du moins pas grand chose
PS: en gros, je suis un debutant...
0
didoux95 Messages postés 845 Date d'inscription mardi 25 avril 2006 Statut Membre Dernière intervention 1 août 2017 2
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){}
 }
}
0
Rejoignez-nous