Lecture ecriture binaire

oncle jules Messages postés 43 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 19 septembre 2005 - 19 sept. 2005 à 13:32
oncle jules Messages postés 43 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 19 septembre 2005 - 19 sept. 2005 à 22:31
Salut à tous et à toutes
Il me faut lire les données d'un fichier .txt pour le transformer en un fichier binaire.
J'ai implémenté tout ça et je vous donne un exemple avec mon code.
A chaque fois que je capture un caractère pour le transformer en binaire et que je souhaite ensuite lire le binaire pour vérifier si c'est le bon caractère, il me sort des entiers à 6 chiffres louches :O
Et puis j'ai lu que la DataInputStream ne permet que de lire les types numériques.
Comment lire les types char ??

Une autre question svp:
Comment écrire dans un fichier avec le DataOutputStream sans écraser ce qu'on a ecrit auparavant.
Je sais qu'avec les bufferedWriter, on ecrit

,
----

BufferedWriter bw = new BufferedWriter(new FileWriter("nom_du_fichier",true));

avec le mot clé true.
Existe-t-il un truc semblable pour DataOutputStream ??

Voici un extrait du fichier .txt avec des entiers, des caractères...

,
----

11 3 32 0 7 40
5520 1 1 1 5 5
32* COFI v.2 IDEAS v.11 *
07/13/05 VVPR 1 0 0

Voici mon code pour lire le fichier .txt

,
----

public class Creatbin {
public void parse_vvp0() {
try {
BufferedReader br = new BufferedReader (new FileReader("sphere.txt"));
DataOutputStream out=new DataOutputStream(new FileOutputStream("sphere.bin"));
StreamTokenizer st = new StreamTokenizer(new FileReader("sphere.txt"));

//je lis les 12 premiers entiers des deux premières lignes
for (int i=0; i<2; i++) {
String ligne1 = br.readLine();
StringTokenizer stk = new StringTokenizer(ligne1);
for (int j=0; j<6; j++) {
int entier = Integer.parseInt(stk.nextToken());
System.out.println(entier);
out.writeInt(entier);
}
}
}
catch (Exception ex) {
System.exit(0);
}
}

public void parse_vvp1() {
try {
BufferedReader br = new BufferedReader (new FileReader("sphere.txt"));
DataOutputStream out=new DataOutputStream(new FileOutputStream("sphere.bin"));
for (int i=0; i<2; i++) {
br.readLine();
}

//je lis la ligne 3 en la découpant, formant ainsi 6 tokens
String ligne3 = br.readLine();
StringTokenizer stk0 = new StringTokenizer(ligne3);
System.out.println(ligne3);
for (int i=0;i<6;i++) {
String token_ligne3 = ""+stk0.nextToken();
System.out.println(token_ligne3);
out.writeChars(token_ligne3);
}

//je lis la 4ème ligne
String ligne4 = br.readLine();
System.out.println(ligne4);
StringTokenizer stk = new StringTokenizer (ligne4);

//je lis le 1er token de la 4ème ligne c'est-à-dire "07/08/05"
String token1_ligne4 = "" + stk.nextToken();
System.out.println(token1_ligne4);
out.writeChars(token1_ligne4);

String token2_ligne4 = "" + stk.nextToken();
System.out.println(token2_ligne4);
out.writeChars(token2_ligne4);

int token3_ligne4 = Integer.parseInt(stk.nextToken());
System.out.println(token3_ligne4);
out.writeInt(token3_ligne4);

int token4_ligne4 = Integer.parseInt(stk.nextToken());
System.out.println(token4_ligne4);
out.writeInt(token4_ligne4);

int token5_ligne4 = Integer.parseInt(stk.nextToken());
System.out.println(token5_ligne4);
out.writeInt(token5_ligne4);
}
catch (Exception ex) {
System.exit(0);
}
}
public static void main (String [ ] args){
try {
BufferedReader br = new BufferedReader (new FileReader("sphere.txt"));
DataOutputStream out=new DataOutputStream(new FileOutputStream("sphere.bin"));
StreamTokenizer st = new StreamTokenizer(new FileReader("sphere.txt"));
Creatbin bb = new Creatbin();
bb.parse_vvp0();
bb.parse_vvp1();
}
catch (IOException ex ) {
System.out.println(ex);
}
}
}

voici mon code pour lire le fichier binaire et ainsi vérifier s'il est bon

,
----

public class Lectbin {
public static void main (String [ ] args){
try {
DataInputStream fic=new DataInputStream(new FileInputStream("sphere.bin"));
for (int i=0; i<12; i++) {
int d = fic.readInt();
System.out.println(d);
}

for (int i=0; i<3; i++) {
char c = fic.readChar();
System.out.println(c);
}
for (int i=0; i<4; i++) {
char c = fic.readChar();
System.out.println();
}
for (int i=0; i<3; i++) {
char c = fic.readChar();
System.out.println();
}
for (int i=0; i<5; i++) {
char c = fic.readChar();
System.out.println();
}
for (int i=0; i<4; i++) {
char c = fic.readChar();
System.out.println();
}
char c = fic.readChar();
System.out.println();
for (int i=0; i<3; i++) {
int entier = fic.readInt();
System.out.println(entier);
}

fic.close();
} catch (IOException ex ) {
System.out.println(ex);
}
}
}

c'est pas très beau ....
Merci beaucoup pour votre aide

1 réponse

oncle jules Messages postés 43 Date d'inscription vendredi 3 juin 2005 Statut Membre Dernière intervention 19 septembre 2005
19 sept. 2005 à 22:31
Probleme résolu
DataOutputstream ne lit pas les caractères.
Pour ne pas écraser les données d'un fichier, c'est comme pour BufferedReader
DataOutputStream out=new DataOutputStream(new FileOutputStream("sphere.bin"),true);
++
0
Rejoignez-nous