Probleme lecture de fichier [java][Resolu] - Java - Programmation
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+
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 !
Marsh Posté le 08-03-2005 à 10:47:17
+1
Tiens nous au courant !
Edit : Désolé, pas assez rapide !
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