Java - fichiers - recherche

Java - fichiers - recherche - Java - Programmation

Marsh Posté le 01-03-2008 à 16:47:05    

Bonjour tout le monde, j'espère que vous pourrez remédier à mon petit problème.
 
Je souhaiterais écrire, lire et rechercher dans un fichier.
 
Tout d'abord je crée un object "Personne" avec nom, prenom etc ...
 
Je voudrais l'écrire dans un fichier et ensuite relire le fichier.  
 
Par la suite, je souhaiterais faire une recherche sur le nom pour trouver ses informations et les afficher (sans afficher tout  le fichier)
 
ps : pourriez-vous me dire comment écrit-on l'objet d'une classe dans un fichier ?  
 
File nom_du_fichier = new File("essai.dat" );
 
DataOutputStream sortie = new DataOutputStream (new FileOutputStream (nom_du_fichier));
 
Mais je ne sais pas comment ajouter mes objets ? comment les écrire?  
 
Voici le code :  
 
import java.io.*;
import java.lang.*;
 
class Fichier1
{
 public void ecrire(String texte, String nom_du_fichier)
 {
  try
  {
   FileWriter fw = new FileWriter(nom_du_fichier, true); // ajout dans le fichier (append) on n'écrit pas par dessus
   
   BufferedWriter output = new BufferedWriter(fw);
   
   output.write(texte);
   
   output.flush();
   
   output.close();    
  }
  catch(IOException e)
  {
   System.out.println("Erreur ecriture : "+e);
   e.printStackTrace();
  }
 }
 
 public void lire(String nom_du_fichier)
 {
  try
  {
   FileReader fr = new FileReader(nom_du_fichier);
   
   BufferedReader br = new BufferedReader(fr);
   
   
   String ligne;
   
   do
   {
    ligne = br.readLine();
    if(ligne != null)
     System.out.println(ligne);
   } while(ligne != null);
   
   br.close();
  }  
  catch(IOException e)
  {
   System.out.println("Erreur lecture : "+e);
   e.printStackTrace();
  }
 }
 
 public void recherche(String mot_recherche, String nom_du_fichier)
 {
  try
  {
   FileReader fr = new FileReader(nom_du_fichier);
   
   BufferedReader br = new BufferedReader(fr);
   
   String ligne;
   
   int drap = 0;
   
   do
   {
    ligne = br.readLine();
     
    if(ligne == mot_recherche)
    {
     System.out.println("Le nom trouve est :"+ligne);
     drap=1;
    }
   } while(ligne != null);
   
   if(drap==0)
    System.out.println("INCONNU" );
   
  }
  catch(IOException e)
  {
   e.printStackTrace();
  }
 }  
}
 
public class Fichier
{
 public static void main(String arg[])
 {
  String texte = "Voici le texte à écrire dans mon fichier cela fonctionne \n\n";
   
  String compte;
   
  System.out.println("DEBUT" );
   
  System.out.print("Entrez un nom : " );
  compte = Lecture.lireString();
     
  Fichier1 f1 = new Fichier1();
   
  System.out.println("ECRIRE" );
   
  f1.ecrire(compte,"Essai.txt" );
   
  System.out.println("LIRE" );
   
  f1.lire("Essai.txt" );
   
  System.out.println("RECHERCHE" );
   
  System.out.print("Entrez le nom recherche : " );
  String nom = Lecture.lireString();
   
  f1.recherche(nom,"Essai.txt" );
 }
}
 
Merci d'avance pour votre aide  
 

Reply

Marsh Posté le 01-03-2008 à 16:47:05   

Reply

Marsh Posté le 17-03-2008 à 17:12:11    

Pour écrire un objet, quelle que soit sa complexité :  

Code :
  1. Personne maPersonne = ...;
  2. File fichier = new File("essai.dat" );
  3. ObjectOutputStream sortie = new ObjectOutputStream(new FileOutputStream(fichier));
  4. sortie.writeObject(maPersonne);
  5. sortie.close();


Seule condition : que Personne implémente l'interface Serializable.
Pour relire l'objet :  

Code :
  1. File fichier = new File("essai.dat" );
  2. ObjectInputStream entree = new ObjectInputStream(new FileInputStream(fichier));
  3. Personne maPersonne = (Personne) entree.readObject();
  4. entree.close();


Et voilà. C'est aussi simple que cela.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed