Bonjour,
Je suis occupé à m'exercer sur un exercice mais il y'a quelque chose d'étrange.
Je remplie un fichier à accès direct de cette façon :
J'appelle ensuite une méthode qui va lire à l'écran, le contenu du RAF :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 import java.io.*; public class RevisionsRAF { public static void main (String [] args) throws IOException { long tailleRec = 12; int nbRec = 4; String rep, categorie; double prix, taux, prixTTC, taxe; RandomAccessFile raf = new RandomAccessFile("c:\\work\\fichiersTaxes.dat","rw"); raf.writeChars("LI");raf.writeDouble(1.45); raf.writeChars("DI");raf.writeDouble(1.60); raf.writeChars("CD");raf.writeDouble(1.75); raf.writeChars("DV");raf.writeDouble(1.85);
le code de cette méthode contient ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part System.out.println(readFile(raf,tailleRec));
ce qui m'inquiête, c'est ce qui est en rouge.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public static String readFile(RandomAccessFile raf, long tailleRec) throws IOException { String s = "Categorie\tTaux\n"; long nbRec = raf.length()/tailleRec; raf.seek(0); for (long i=0; i<nbRec;i++) { char cat [] = new char [2]; cat[0] = raf.readChar(); cat[1] = raf.readChar(); String sCat = new String(cat); System.out.println("ici " + sCat); s+= sCat + "\t\t"; s+= raf.readDouble()+"\n"; } return s; }
J'ai l'impression que cat[0] prend une valeur (exemple LI) et cat[1] prend une autre valeur (DI par exemple).
Si je retire le for, il me montre bien qu'une seule valeur, LI.
En écrivant ce message, je me demande si deux cases d'un tableau char ne sont pas nécessaire pour pouvoir mettre un char (dans le cas d'un raf) ?
J'espère que vous pourrez m'aider.
Merci d'avance.
beegees
Partager