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

rehhab Messages postés 13 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 6 décembre 2012 - 25 févr. 2011 à 22:58
rehhab Messages postés 13 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 6 décembre 2012 - 13 mars 2011 à 18:36
É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

Utilisateur anonyme
25 févr. 2011 à 23:52
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 /...
0
Utilisateur anonyme
25 févr. 2011 à 23:57
Ps,

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


...\ Dan /...
0
rehhab Messages postés 13 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 6 décembre 2012
26 févr. 2011 à 21:37
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
0
Utilisateur anonyme
27 févr. 2011 à 01:07
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 /...
0

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

Posez votre question
rehhab Messages postés 13 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 6 décembre 2012
27 févr. 2011 à 10:30
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
0
Utilisateur anonyme
27 févr. 2011 à 16:32
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 /...
0
rehhab Messages postés 13 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 6 décembre 2012
27 févr. 2011 à 16:47
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,
0
Utilisateur anonyme
27 févr. 2011 à 19:56
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 /...
0
rehhab Messages postés 13 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 6 décembre 2012
27 févr. 2011 à 20:54
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
0
Utilisateur anonyme
28 févr. 2011 à 09:28
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 /...
0
Utilisateur anonyme
28 févr. 2011 à 09:39
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 /...
0
rehhab Messages postés 13 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 6 décembre 2012
13 mars 2011 à 18:36
merci bien tu me fais un grand plaisir
Cordialement
0
Rejoignez-nous