Bonjour tout le monde,
Je rencontre le problème suivant dans un projet :
je dois mettre en forme un fichier txt "aléatoirement". En fait j'ai des données dans la DB et d'autres provenant d'un fichier reçu et il faut les combiner pour n'avoir qu'un seul fichier. Le problème est que cet ordre doit pouvoir changer dynamiquement (donc stockage des params dans la DB).
Au vu du problème je me suis orienté vers RandomAccessFile mais ça me fait un peu n'importe quoi
Le code est du type :
Après divers test jme suis rendu compte que c'est au niveau du rac.seek(x) que ça merdait : j'ai l'impression qu'il prend pas en compte qu'il est sur une nouvelle ligne et donc par exemple si jmet seek(20), il va chercher à 20 du début de la 1ère ligne et foire tout le fichier alors que si je mets pas le seek le fichier s'enregistre correctement mais bien sur dans l'ordre du code et plus dans celui des params, perdant tout l'intêret de ce système.
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
20
21
22
23
24
25
26
27 //On parcourt chaque ligne du fichier qu'on reçoit while ((nextLine = reader.readLine()) != null) { try { //On écrit un header en récupérant des infos présentes dans la db rac.writeBytes("TEST"); rac.writeBytes("-"); rac.writeBytes("16/02/1985"); rac.writeBytes("-"); rac.writeBytes(String.valueOf(1)); rac.writeBytes("-"); rac.writeBytes("01"); rac.writeBytes("032321"); rac.writeBytes("\n"); //Dans ce header on a le nb d'enregistrements attendus, on peut donc parcourir les x lignes normalement présentes while (nb_lignes > 0) { //On écrit toutes les infos souhaités aux positions indiquées rac.seek(position_i); rac.write(valeur_i); } } catch (IOException ex) { ex.printStackTrace(); } }
Savez-vous comment je pourrais marcher de la bonne manière ce seek? Ou alors c'est pas possible et jdois chercher dans une autre voie (si oui laquelle) ?
Merci d'avance
Partager