Rechercher : dans
Par :

Sujet: [C++] lecture d un fichier java par un

Dernière réponse le 17 déc 2007 à 17:41:03 suber600, le 30 sep 2002 à 14:39:54 
 Signaler ce message aux modérateurs

Voila le but: creer un fichier en java ( mais au niveau byte ... c est a dire avec le bloc note on comprend rien) et le faire relire par un programme C++.

J aimerais savoir si c est possible , le fichier je compose d entier et de float (ou double).

J arrive a creer un fichier un java mais mon programme c++ n arrive pas a le lire.
Voici un programme en C++ qui ecrit des entier et qui les lit(le programe fonctionne):


// programme C++ qui ecrit et qui lit des entiers

// labo1_3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <fstream.h>
#include <stdlib.h>
#include <stdio.h>



void main (void)
{

filebuf fichier;
int n;
// double dou=5;

//ecriture dans un fichier

if(!fichier.open ("fDOWNLOAD/Classictest.txt",ios::out))
{
cout<<"Erreur d ouverture!"<<endl;
exit(1);
}
ostream flux(&fichier);
for(int i=10;i>0;i--)
{
n=i*5-6;
cout<<i<<"(I) on ecrit "<<n<<endl;
flux.write((char*)&n,sizeof(int));
// flux.write((char*)&dou,sizeof(double));

}
flux.flush();
fichier.close();



cout<<"lecture du fichier"<<endl;
//if(!fichier.open ("FClassic.txt",ios::in))
if(!fichier.open ("fDOWNLOAD/Classictest.txt",ios::in))
{
cout<<"Erreur d ouverture!"<<endl;
exit(1);
}

cout<<"Apres lecture du fichier"<<endl;


istream fluxi(&fichier);
fluxi.read((char*)&n,sizeof(int));
while(!fluxi.eof())
{
cout<<"Le fichier cree en java contient : "<<n<<endl;
fluxi.read((char*)&n,sizeof(int));
//fluxi.read((char*)&n,sizeof(double));
}

fichier.close();

cout<<"Fermeture du fichier"<<endl;

}



biensur lorque je lui donne mon fichier java cela ne marche pas


voila le but: creer un fichier en java ( mais au niveau byte ... c est a dire avec le bloc note on comprend rien) et le faire relire par un programme C++.

J aimerais savoir si c est possible , le fichier je compose d entier et de float (ou double).

J arrive a creer un fichier un java mais mon programme c++ n arrive pas a le lire.
Voici un programme en C++ qui ecrit des entier et qui les lit(le programe fonctionne):


// programme C++ qui ecrit et qui lit des entiers

// labo1_3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <fstream.h>
#include <stdlib.h>
#include <stdio.h>



void main (void)
{

filebuf fichier;
int n;
// double dou=5;

//ecriture dans un fichier

if(!fichier.open ("fDOWNLOAD/Classictest.txt",ios::out))
{
cout<<"Erreur d ouverture!"<<endl;
exit(1);
}
ostream flux(&fichier);
for(int i=10;i>0;i--)
{
n=i*5-6;
cout<<i<<"(I) on ecrit "<<n<<endl;
flux.write((char*)&n,sizeof(int));
// flux.write((char*)&dou,sizeof(double));

}
flux.flush();
fichier.close();



cout<<"lecture du fichier"<<endl;
//if(!fichier.open ("FClassic.txt",ios::in))
if(!fichier.open ("fDOWNLOAD/Classictest.txt",ios::in))
{
cout<<"Erreur d ouverture!"<<endl;
exit(1);
}

cout<<"Apres lecture du fichier"<<endl;


istream fluxi(&fichier);
fluxi.read((char*)&n,sizeof(int));
while(!fluxi.eof())
{
cout<<"Le fichier cree en java contient : "<<n<<endl;
fluxi.read((char*)&n,sizeof(int));
//fluxi.read((char*)&n,sizeof(double));
}

fichier.close();

cout<<"Fermeture du fichier"<<endl;

}



biensur lorque je lui donne mon fichier java cela ne marche pas


voila le but: creer un fichier en java ( mais au niveau byte ... c est a dire avec le bloc note on comprend rien) et le faire relire par un programme C++.

J aimerais savoir si c est possible , le fichier je compose d entier et de float (ou double).

J arrive a creer un fichier un java mais mon programme c++ n arrive pas a le lire.
Voici un programme en C++ qui ecrit des entier et qui les lit(le programe fonctionne):


// programme C++ qui ecrit et qui lit des entiers

// labo1_3.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <fstream.h>
#include <stdlib.h>
#include <stdio.h>



void main (void)
{

filebuf fichier;
int n;
// double dou=5;

//ecriture dans un fichier

if(!fichier.open ("fDOWNLOAD/Classictest.txt",ios::out))
{
cout<<"Erreur d ouverture!"<<endl;
exit(1);
}
ostream flux(&fichier);
for(int i=10;i>0;i--)
{
n=i*5-6;
cout<<i<<"(I) on ecrit "<<n<<endl;
flux.write((char*)&n,sizeof(int));
// flux.write((char*)&dou,sizeof(double));

}
flux.flush();
fichier.close();



cout<<"lecture du fichier"<<endl;
//if(!fichier.open ("FClassic.txt",ios::in))
if(!fichier.open ("fDOWNLOAD/Classictest.txt",ios::in))
{
cout<<"Erreur d ouverture!"<<endl;
exit(1);
}

cout<<"Apres lecture du fichier"<<endl;


istream fluxi(&fichier);
fluxi.read((char*)&n,sizeof(int));
while(!fluxi.eof())
{
cout<<"Le fichier cree en java contient : "<<n<<endl;
fluxi.read((char*)&n,sizeof(int));
//fluxi.read((char*)&n,sizeof(double));
}

fichier.close();

cout<<"Fermeture du fichier"<<endl;

}



biensur lorque je lui donne mon fichier java cela ne marche pas

Meilleures réponses pour « Sujet: [C++] lecture d un fichier java par un » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
[Python] Lire et écrire des fichiers CSV VoirLIRE ET ÉCRIRE DES FICHIERS CSV Python www.python.org, dans sa version 2.4 supporte de facto le format CSV (comma-separated values: valeurs séparées par des virgules). La Library Reference est certes très explicative à ce sujet, mais uniquement...

1

tafiscobar, le 30 sep 2002 à 16:33:31

Je n'ai pas lu ton code et je n'ai meme pas envie, mais je pense q tu n pourras lire ton fichier fait en java car les données sont codées sur 1 octet(un byte c'est sur un octet) et un int en C++,c'est sur 4octets, donc essaies de prendre un autre type,je ne sais pas moi, essaies peut etre short.
tafiscobar

Répondre à tafiscobar

2

 hibour, le 17 déc 2007 à 17:41:03

Ce n'est pas possible de lire en java un fichier écrit en C/C++ (et inversement), car le codage des types de données n'est pas le même dans les 2 langages, par exemple : un char est sur 1 octet en C/C++, en Java c'est sur 2 octet, il y aussi le probleme d'architecture des big endian/little endian (http://fr.wikipedia.org/wiki/Endianness) , c'est pour ça on trouve des Middlewares comme CORBA, SOAP..etc (des couches intermédiaire capable de faire le codage,/décodage des informations)

Si tu veux le faire vraiment alors soit tu utilise ces Middleware, soit tu écrit ton popre codeur/décodeur de format pour bien lire/écrire les données dans le bon ordre càd écrire des bytes bien ordonné après les lire dans le même ordre. utilise byte en java et char en C/C++.

;-)

Répondre à hibour