[java pour les nuls] question gratuite sur la lecture d'un fichier

question gratuite sur la lecture d'un fichier [java pour les nuls] - Java - Programmation

Marsh Posté le 11-06-2004 à 11:56:25    

Je cherche à lire un fichier texte avec Java 1.5.
OK j'ai bien vu la classe FileInputStream, mais elle dispose que peu de méthodes :/.
Je ne trouve pas mes bonnes petites vieilles méthodes du C : fseek, fgets, ...  :sweat:  
Sinon la méthode read () de la classe renvoie un int : c'est un type char en fait non (code sur un int) ?  :heink:  
 
thx!

Reply

Marsh Posté le 11-06-2004 à 11:56:25   

Reply

Marsh Posté le 11-06-2004 à 11:59:40    

Ba ouais, Java c'est de l'objet, normal que tu retrouves pas tes fonctions de C [:spamafote]
Donc pour lire bêtement un fichier, c'est effectivement read() dans FileInputStream. Au cas où tu saurais pas, int et char c'est la même chose :o Mais FileInputStream n'est pas spécifique (et donc peu adapté) à la lecture de fichier texte.
Si tu veux faire de la lecture de chaînes, utilise plutôt FileReader (couplé avec un BufferedReader qui te permettra de faire de la lecture de ligne via readLine()).


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 11-06-2004 à 12:10:50    

Taiche a écrit :

Ba ouais, Java c'est de l'objet, normal que tu retrouves pas tes fonctions de C [:spamafote]
Donc pour lire bêtement un fichier, c'est effectivement read() dans FileInputStream. Au cas où tu saurais pas, int et char c'est la même chose :o Mais FileInputStream n'est pas spécifique (et donc peu adapté) à la lecture de fichier texte.
Si tu veux faire de la lecture de chaînes, utilise plutôt FileReader (couplé avec un BufferedReader qui te permettra de faire de la lecture de ligne via readLine()).


 
merci  :hello:  
mais je ne touve tjs pas mon fseek :/
 
PS : heuresement que dans la javadoc il y a une partie SeeAlso dans la description de la classe ! voila ce qu'on trouve pour FileInputStream :


See Also:
File, FileDescriptor, FileOutputStream


...ils auraient pu en mettre un peu plus  :sarcastic:
 
PS2 : je viens de decouvrir InputStreamReader aussi

Reply

Marsh Posté le 11-06-2004 à 12:15:26    

Pour fseek, passe alors par RandomAccessFile qui contient la méthode seek().
Après, il faut aussi que tu piges les notions de flux (stream) qui n'ont pas grand-chose à voir avec les fonctions de file classique du C. Si tu connais iostream.h en C/C++, alors t'auras déjà une meilleure idée de ce que font les streams de Java.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 11-06-2004 à 12:47:19    

OK, et juste un dernier petit truc : je chope une ligne qui contient :
DIMENSION: 34
Celle ci je la mets ds un StringBuffer et je dois chope le nombre 34 : suffit de me placer au bon index, de lire les 2 caracteres (3 et 4) et pour recuperer ca en int ?

Reply

Marsh Posté le 11-06-2004 à 12:49:18    

Non. Une fois que t'as lu les caractères, t'as leur valeur ASCII. Ici, 33 et 34.
Pour passer d'une String à un int, vois du côté de Integer.parseInt(). Et hop, t'auras 34.
 
Lis la javadoc, c'est 'achement utile :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 11-06-2004 à 13:32:10    

Bon tu as l'air de bien connaitre la chose ;) (j'ai du mal, jconnais aucune fct Java et ca fais 1 heure que je suis en train de lire la javadoc pour trouver les fct qu'il me faut)
...jvoudrais a partir d'une chaine (type string) suivante par exemple:


  43 56 78   89  56       45  56 43  5  7    8


 
dans une boucle faire :
tq que !fin_chaine
{
  virer les blancs;
  matrix[i][j] = choper le nombre;
}
 
En C, cela se fait tel quel en 2 instructions. En Java jse po  
 
 [:spamafote]  
 
merci d'accelerer mes recherches  :)

Reply

Marsh Posté le 11-06-2004 à 13:55:58    

Pour tout ce qui est gestion de boucle en fonction des caractères, vois java.util.StringTokenizer.
Une fois que t'as le nombre dans une chaîne, Interger.parseInt() :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 14-06-2004 à 11:16:21    

voire même maLigne.split(" " ); qui renvoie un array de tokens séparés par le " "
 
mais je ne sais pas lequel est le plus propre... le split() ou le StringTokenizer ?

Reply

Marsh Posté le 14-06-2004 à 11:19:02    

Le StringTokenizer, surtout pour les débutants :o split() demande une regexp en entrée, c'est pas hyper léger pour faire un truc aussi simple (faudrait faire des tests comparatifs, pour voir, un jour) et c'est surtout beaucoup moins lisible (à mon sens).


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 14-06-2004 à 11:19:02   

Reply

Marsh Posté le 14-06-2004 à 11:36:04    

Taiche a écrit :

Ba ouais, Java c'est de l'objet, normal que tu retrouves pas tes fonctions de C [:spamafote]

vas y molo, je trouve que les fichiers sont particulièrement chiants à utiliser en Java, il te faut 3 lignes pour ouvrir un fichier texte alors que dans certains langages récents, il te faut presque une instraction. enfin c'est surtout du au fait que tu peux pas avoir de relation en diamant, faut donc faire de la compisition et construire 36 couches les une au dessus des autres

Reply

Marsh Posté le 14-06-2004 à 11:45:03    

je viens de relire la javadoc, j'avais oublié que le STok. ne prenais pas de regex en argument :jap:
 
il faudrait faire des p'tits tests en effet pour savoir si on perd plus de temps à jouer avec la regexp ou de jouer avec la construction d'une collection.

Reply

Marsh Posté le 04-05-2013 à 10:43:05    

J'ai un petit soucis sur la lecture d'un fichier en Java. Voila j'ai un fichier .ini dont la forme est comme ceci:
   [abrev]
n1=slt
n2=kw
  [sign]
n1=salut
n2=quoi
 et ce que je veux faire c'est d'extraire la valeur des n1 et n2 de ces 2 groupes et les mettres dans un array[][] ou le premier colonne contient l'abrev et le 2em contient celui du sign. J'ai besoin d'aide si quelqu'un pouvait m'aider a resoudre ce probleme!
 

Reply

Sujets relatifs:

Leave a Replay

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