IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Lire un fichier Fortran avec Java


Sujet :

Fortran

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Lire un fichier Fortran avec Java
    Bonjour,

    Je suis etudiant en école d'ingenieur en stage et on me demande de lire un fichier binaire fortran avec JAVA. Ce fichier contient une suite de nombres, deux long suivi d'un certain nombre de doubles. Le problème est que lorsque je lis le fichier binaire avec JAVA, je ne prend que des valeurs brutes, or le fichier fortran ne commence pas directement avec celles que je recherche. Quelqu'un pourrait me dire comment je pourrais lire ce fichier ( f77_unformated ) et recupérer mes valeurs ?

    En vous remerciant

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Le problème vient du fait qu'un fichier unformatted, ce n'est pas nécessairement un fichier binaire. Selon ce que tu écris, le fichier est probablement "unformatted" et "sequential".

    Un fichier "unformatted" et "sequential" a une structure propriétaire, bien qu'elle soit généralement toujours à peu près la même d'un compilateur à l'autre. Tu devrais lire le manuel du compilateur, la structure du fichier y est certainement décrite.

    Tu trouveras aussi de l'info dans la discussion suivante :
    http://www.developpez.net/forums/sho...d.php?t=300230

  3. #3
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je suis presque sûr que le fichier est binaire, les personnes qui m'ont donné à travailler dessus s'en sont déjà servi et me l'ont présenté comme tel. Dans tous les cas je vais aller voir le liens.

    Merci

  4. #4
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Les données du fichier ont déjà été traitées avec IDL. La structure utilisée pour le lire était la suivante :

    strarc = {NARC :0l ,NARC2 :0l ,T1 :0.d,X1 :0.d,Y1 :0.d,Z1 :0.d,$
    VX1 :0.d,VY1 :0.d,VZ1 : 0.d,FI1 :0.d,XL1 :0.d,HS1 :0.d}

    0l : long 32b
    0.d : double 64b

    Seulement en IDL on peut spécifier qu'on travaille sur du fortran apparemment, ce qui simplifie largement la chose. Ce n'est pas le cas en JAVA, ou du moins je crois pas. Du coup comment recupérer cette structure ?

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Je n'ai pas compris le code IDL. Je l'ignore donc dans ma réponse...

    En supposant qu'il n'y aura pas de conflit d'endianness, voici la solution que j'utiliserais en Java :

    • Lire en binaire
    • La liste de variable doit commencer et finir par un indicateur (int32) fournissant la longueur du record. Les autres variables doivent respecter les types et longueurs des variables Fortran.
    • Valider que les indicateurs début et fin ont la même valeur (contrôle)


    À cause des longueurs d'enregistrement insérées par Fortran, il est recommendé de répliquer exactement les entrées / sorties de Fortran :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    integer :: i
    real (8) :: d1,d2,d3
    ...
    write (...) i,d1
    write (...) d2,d3
    ...
    Devrait être lu par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int32 LongDeb,LongFin
    int32 i
    double d1,d2,d3
    ...
    open file binary
    read LongDeb,i,d1,LongFin
    if (LongDeb != LongFin) Erreur de synchro
    read LongDeb,d2,d3,LongFin
    if (LongDeb != LongFin) Erreur de synchro
    ...

Discussions similaires

  1. lire un fichier partagé avec Java
    Par rimy2mi dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 05/02/2010, 10h15
  2. comment je peux lire un fichier audio avec java.
    Par imad24 dans le forum Multimédia
    Réponses: 2
    Dernier message: 22/01/2010, 17h28
  3. lire un fichier .grb avec java
    Par norcan dans le forum Général Java
    Réponses: 0
    Dernier message: 20/11/2009, 16h31
  4. Lire un fichier mp3 avec Java
    Par hebmaster dans le forum Multimédia
    Réponses: 2
    Dernier message: 18/05/2007, 18h53
  5. Lecture de fichier binaire fortran avec java
    Par bigbrother737 dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2007, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo