Pessoal, olha que problema estranho em manipulação de arquivos usando c++ e Java:
Tenho um programa em c++ que grava a seguinte struct em arquivo:
struct
{
long Tamanho;
int codigo;
} Cabecalho
A parte de gravação dos dados (após setados os valores) no disco é:
HFILE File;
OFSTRUCT Of;
Cabecalho Dados;
File = OpenFile ( (LPCSTR) Nome.c_str(), &Of, OF_WRITE);
_lwrite(File,(char *)&Dados,sizeof(Dados));
_lclose(File);
E uma função em Java para ler esse arquivo:
private void openFile () {
JFileChooser fileChooser = new JFileChooser ();
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.CANCEL_OPTION){
System.out.println("Clicado CANEL");
}
File fileName = fileChooser.getSelectedFile();
if (fileName == null || fileName.getName().equals("")){
System.out.println("Erro no nome do arquivo");
}
else {
try {
file = new RandomAccessFile(fileName,"rw");
long tamanho = file.readLong();
int codigo = file.readInt();
System.out.println(tamanho);
System.out.println(codigo);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
O problema todo é que quando a função Java lê o arquivo, os valores encontrados são diferentes dos valores gravados pela função C++.
Alguém sabe por que isso ocorre e principalmente, qual a forma correta de se lêr esses dados?
Obrigado aos que ajudarem…
Ulisses Nunes