Créer un fichier texte et l'ouvrir en java

Signaler
Messages postés
13
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
6 décembre 2012
-
Messages postés
13
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
6 décembre 2012
-
Étant donné un fichier texte (bloc note) contenant deux colonnes numériques,
comment je peux réaliser un programme java qui permet d'ouvrir le fichier, le lire et de le représenter graphiquement sous forme d'un histogramme.

je dois créer d'abord ce fichier puis le lire, je trouve des difficultés à ce niveau là. svp si quelqu'un a des proposition pour m'aider à résoudre ce problème.

12 réponses


Salut,

Je vais essayer de répondre à ta question "Créer un fichier texte et l'ouvrir en java"

Pourquoi dis-tu:
"Étant donné un fichier texte (bloc note) contenant deux colonnes numériques,"
Est-ce que cela veut dire que tu crée ton fichier texte hors programme en utilisant le bloc note et qu'ensuite tu veux lire ce .txt ?

Ou bien tu veux créer ce .txt à l'aide d'un programme java puis le lire et utiliser ce que tu viens de créer ?

Si tu réponds il serait bien que tu dises quelle est le format de la ou des lignes créées...


...\ Dan /...

Ps,

Il faudrait aussi qu'on sache de quelle version java tu disposes...


...\ Dan /...
Messages postés
13
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
6 décembre 2012

d'abord merci pour votre attention,

oui je veux dire que j'ai créée mon fichier texte hors programme en utilisant le bloc note et qu'ensuite je veux ouvrir et lire ce .txt et le représenter sous forme d'un histogramme ou une courbe

je travaille sur NetBeans IDE 6.8

Re,

Cela ne me donne pas la version java utilisée.

Supposons que tu disposes de la classe Scanner voici une méthode permettant de lire un fichier (.txt dans notre cas):
     
// Lire un fichier avec Scanner   (import java.util.Scanner;)
      // ATTENTION LA CLASSE SCANNER N'EXISTE QUE DEPUIS JAVA 5.0
      public static String lireFichier(String filePath)  //lecture du fichier (il n'y a pas d'open à faire)
      {
       String strLignes = ""; // On suppose que le fichier n'est pas énorme et on stock les lignes lues
         try
         {
          scanner = new Scanner(new File(filePath)); // le chemin complet (éventuel) du fichier à lire
            try
            {
  // On boucle  tant qu'il y a une ligne à lire
             while (scanner.hasNextLine())
             {
              String line = scanner.nextLine(); // String line contient la ligne lue
               
              System.out.println(line); // pour voir ce qui est lu 
              strLignes+= line + " : ";  // dans cet exemple on range chaque ligne en les séparant  par " : "
       // ce qui nous permettra de les récupérer lors de l'utilisation
             }               
            } 
            finally
            {
            // dans tous les cas, on ferme nos flux
               scanner.close();
            }
         }
            catch (IOException ioe)
            {
            //e.printStackTrace();
            System.out.println("Erreur --" + ioe.toString());
            }
         return strLignes; // on retourne toutes les lignes lues
      }

Exemple d'utilisation:
String lesLignes = lireFichier("unFichierTexte.txt"); //Sans chemin si le .txt est dans le dossier de travail

// récupération des lignes dans un tableau de String (mais pas forcément) et utilisation:
Pattern pattern = Pattern.compile(" : "); // import java.util.regex.Pattern;
String[] tableauLignes = pattern.split(lesLignes); // les lignes sont dans tableauLignes


Comme tu ne m'as pas donné le format des lignes de ton .text je ne peux t'en dire plus pour le moment...

Cordialement,

...\ Dan /...
Messages postés
13
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
6 décembre 2012

mon astuce c'est que mon tableau contient 2 colonne numérique(int) par exemple ID et fréquence
tu veux dire par format:int ou double...?
si c'est ça j'ai répondu à ton question.
merci

Non, int ou double c'est le type.

Ce qu'il me faut c'est en fait un exemple, une liste de ton fichier pour que je sache comment récuperer chaque ligne (ou la ligne s'il n'y en a qu'une)...


...\ Dan /...
Messages postés
13
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
6 décembre 2012

ouiii c'est mon pb comment je peux récupérer chaque ligne du fichier
mon fichier .txt contient :
-------ID---------------------Fréquence (nombre d'accès à un forum)
-------1----------------------120
-------2----------------------10
-------3----------------------0
-------4----------------------50
-------5----------------------12
-------6----------------------30

c'est donc de quelle format?

si tu peux m'expliquer de plus

Cordialement,

Moi je dis format, ou structure de la ligne, c'est à dire comment se présentent les données dans la ligne, ce qu'il y a entre chaque donnée, par exemple un espace qui tiendra lieu de séparateur.

Voyant ton exemple, j'opterais pour ce "format" :

1 120
2 10
3 0
4 50
5 12
6 30

Donc pour chaque ligne l'ID un espace et le nombre d'accès.
Bien entendu accès ne peut être qu'un entier par exemple de type int, ou long (ça dépend du nombre maxi d'accès possible pour un ID)

Il semble que l'Id est également numérique donc peut-être aussi un int ou un long mais pourait être un String.
Le tout est de savoir ce qu'on choisi

J'attend que tu me dises ce que tu en penses et ce que tu décides.



...\ Dan /...
Messages postés
13
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
6 décembre 2012

Ah d'accords,
pour chaque ligne l'ID un espace et le nombre d'accès et l'accès ne peut être qu'un entier de type int

Désolé j'ai dû m'absenter...
Nous avons donc ce fichier (nommons le par exemple fichierAcces.txt) qui contient ceci:

1 120
2 10
3 0
4 50
5 12
6 30

Et les données ID et acces sont des String que nous avons pour l'instant dans String lesLignes sous cette forme:
1 120:2 10:3 0:4 50:5 12:6 30

et que nous mettrons dans le tableau de String tableauLignes:
Pattern pattern = Pattern.compile(" : "); // import java.util.regex.Pattern;
String[] tableauLignes = pattern.split(lesLignes); // les lignes sont dans tableauLignes

L'utilisation peut donc se faire comme ceci:
String lesLignes = lireFichier("fichierAcces.txt");
      
         Pattern pattern = Pattern.compile(" : "); // import java.util.regex.Pattern;
         String[] tableauLignes = pattern.split(lesLignes);
         System.out.println("\n\n");
         for(int i = 0; i < tableauLignes.length; i++)
         {
            System.out.println("Ligne: " + tableauLignes[i]);
            int index = tableauLignes[i].indexOf(" ");
            String idS = tableauLignes[i].substring(0, index);
            String accesS = tableauLignes[i].substring(index +1);
         
            System.out.println("String idS = " + """ + idS + """);
            System.out.println("String accesS = " + """ + accesS + """);
            
            int idI = Integer.parseInt(idS);
            int accesI = Integer.parseInt(accesS);
         
            System.out.println("int idI = " + idI);
            System.out.println("int accesI = " + accesI);
            // traitement à faire avant de passer à l'id suivant
         // Ce peut être l'appel d'une méthode à laquelle
         // on donne l'id et l'acces String ou int en paramètres
         // selon les besoins.
         // Finalement tu n'as peut-être pas besoin des int
         // et que la liste id/acces est suffisante
         // Mais tu disposes des deux (String et int)
         }

...\ Dan /...

Ps,
J'ai utilisé substring, mais ce n'est pas l'unique methode pour obtenir tes id et accès...
N'hésite pas, tu peux me demander des explications si nécessaire.
Cordialement
...\ Dan /...
Messages postés
13
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
6 décembre 2012

merci bien tu me fais un grand plaisir
Cordialement