daviddubois
Messages postés92Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention 6 janvier 2012
-
8 juil. 2007 à 20:10
daviddubois
Messages postés92Date d'inscriptionvendredi 19 mars 2004StatutMembreDernière intervention 6 janvier 2012
-
9 juil. 2007 à 19:05
Bonjour tout le monde,
J'ai un exercice qui consiste à remplir un fichier à accès direct avec 20 nombres aléatoires (de 1 à 10).
J'ai codé ce bout de code mais j'ai plusieurs problèmes :
import java.io.*;
public class Jean
{
public static void main (String [] args)throws IOException
{
File f = new File("c:\\fichier.dat");
RandomAccessFile raf = new RandomAccessFile(f,"rw");
int tailleRec =4;
long nbRec = raf.length()/tailleRec;
System.out.println("raf.length vaut " + raf.length());
System.out.println("la valeur de nbRec vaut " + nbRec);
int nbreAleatoire;
raf.seek(0);
int nb;
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 8 juil. 2007 à 20:39
Salut,
en fait quand vous faites :
raf.writeInt(nbreAleatoire);
c'est les caractères "ascii" des nombres qui sont inscrits dans le fichier et non pas leur valeur en bianire (ouvrer le avec un editeur de texte vous verrez).
la taille (en octets) correspond donc au nombre total de chiffres écrit (le nombre 10 contient deux chiffres, il est écrit avec sur octets, l'un code le cartère 1, et l'autre le caractère 0).
Il faut en plus rajouter le codage des fins de lignes (deux caractères \r\n sous windows, un seul \n sous linux).
En gros je crois que ce n'est pas ce que vous chercher, je penses que ce que vous voulez savoir c'est le nombre de ligne contenu dans le fichier.
En fait même pas je crois que le code ne fait pas du tout ce que vous voulez.
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 8 juil. 2007 à 22:20
Bon j'ai tester, j'ai pas de problème chez moi, en créant un fichier avec la bonne taille au départ, ça marche bien:
raf.length vaut 40
la valeur de nbRec vaut 10
2
9
3
9
2
1
5
7
9
6
raf.length: 40
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 201212 9 juil. 2007 à 10:35
en executant ton code j obtient bien le bon resultat 10 entier dans un fichier de 40 octets
par contre il te faut changer une ligne dans ton code :
long nbRec = raf.length()/tailleRec;
ecrire
long nbRec = 10;
car c est bien 10 enregistrement que tu veux ;o) et c est en changeant cette valeur que tu peux en faire varrier le nombre ;o)...
avec ton init à la premiere execution le fichier n existe pas et sera donc vide nbRec=0 .... ;o) pas top ....