[java][Resolu] Probleme lecture de fichier

Probleme lecture de fichier [java][Resolu] - Java - Programmation

Marsh Posté le 07-03-2005 à 16:12:53    

Bonjour a tous.
 
Je suis en train d'ecrire dans lequel je me suis apercu d'un probleme, qui vient en fait de la lecture d'un fichier binaire. Pour simuler le probleme, j'ai crée un petit exemple :
 
public static void main(String[] args) {
 System.out.println( "Coucou" );
 try {
  BufferedReader entree = new BufferedReader ( new FileReader( "licence.cfg" ));
  System.out.println ( "Lecture du fichier " );  
 
  while ( entree.ready() ) {
   char c = (char)(entree.read()&0xFF);
   System.out.print( Integer.toHexString( c ) + " " );
  }
   
  entree.close ();
 } catch ( IOException e) {
  System.out.println (e.getMessage ());
 }
 
Le fichier licence.cfg est un fichier que j'ai crée pour les tests, c'est un fichier binaire qui comprend 256 octets, de 0 a 255.
 
Lorsque je lance le programme, il est donc censé m'afficher une suite de valeurs hexadecimales de 0 a FF.
 
Et bien en fait, certaine valeurs ne passent pas, ou sont mal lues, car j'obtiens cela :
 
0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 8a 8b 8c 8d 8e 8f 90 91 92 93 94 95 96 97 98 99 9a 9b 9c 9d 9e 9f a0 a1 a2 a3 ac a5 60 a7 61 a9 aa ab ac ad ae af b0 b1 b2 b3 7d b5 b6 b7 7e b9 ba bb 52 53 78 bf c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 ca cb cc cd ce cf d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 da db dc dd de df e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 ea eb ec ed ee ef f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd fe ff
 
Au lieu de A4 j'ai AC, au lieu de A6 j'ai 60, au lieu de A8 j'ai 61, au lieu de B4 j'ai 7D, et il y'en a d'autres.
 
D'apres vous ca vient d'ou ?
 
Bonne journée a tous


Message édité par nlc le 08-03-2005 à 10:47:18
Reply

Marsh Posté le 07-03-2005 à 16:12:53   

Reply

Marsh Posté le 07-03-2005 à 21:49:03    

Hello !  
 
Je crois que la classe BufferedReader est plutôt utilisée pour les fichiers textes, et ton problème vient du fait que tu lis un fichier binaires : certains caractères spéciaux sont donc interprétés et modifiés.
 
Tu devrais essayer plutôt essayer de lire ton fichier avec FileInputStream.
 
A+

Reply

Marsh Posté le 08-03-2005 à 10:46:14    

Merci !! En effet c'etait bien le probleme.
En faisant comme ca ca marche niquel :
 
  try {
   FileInputStream fr = new FileInputStream(this);
         BufferedInputStream br = new BufferedInputStream( fr );
 
   // Lecture dans monFichier.txt
         System.out.println ( "Lecture du fichier" );  
 
   while ( br.available() != 0 ) {
    char c = (char)(br.read()&0xFF);
    //System.out.print( Integer.toHexString( c ) + " " );
    maString += c;  
   }
 
   br.close ();
 
         System.out.println ( "Le fichier lu contient " + maString.length() + " octets" );  
  } catch ( IOException e) {
   System.out.println (e.getMessage ());
   maString = "";
  }
 
 
Merci encore !

Reply

Marsh Posté le 08-03-2005 à 10:47:17    

+1
Tiens nous au courant ! :)
 
Edit : Désolé, pas assez rapide !  :lol:


Message édité par niouts le 08-03-2005 à 10:47:46
Reply

Sujets relatifs:

Leave a Replay

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