L'ouverture/création d'un fichier MED s'effectue avec la routine MEDfileOpen (C) / mfiope (F).
Cette routine renvoie un identificateur ( fid
) utilisé par les autres routines de l'API pour accéder aux données du fichier.
Les différents modes d'accès possibles sont :
Création (MED_ACC_CREAT)
Ouverture en lecture seule (MED_ACC_RDONLY)
Ouverture en lecture/écriture (MED_ACC_RDWR)
Ouverture en lecture/écriture avec ajout (MED_ACC_RDEXT)
Dans ce dernier mode, l'écriture n'est possible que pour ajouter dans le fichier de nouvelles données (une erreur est générée si la donnée existe déjà).
fid = MEDfileOpen("test1.med",MODE_ACCES);
La routine MEDfileClose (C) / mficlo (F) permet de fermer un fichier.
if ((ret = MEDfileClose(fid)) < 0) { MESSAGE("Erreur à la fermeture du fichier"); return -1; }
La routine MEDfileCommentWr (C) / mficow (F) permet l'écriture d'un en-tête de fichier, la routine MEDfileCommentRd (C) / mficor (F) la lecture.
Cet en-tête à usage optionnel est purement descriptif. Il comporte au plus MED_COMMENT_SIZE caractères.
char des[MED_COMMENT_SIZE+1]="Ceci est une courte description de mon fichier test1.med"; if (MEDfileCommentWr(fid,des) < 0) { MESSAGE("Erreur à l'ecriture de l'en-tete du fichier"); ret = -1; }
char des[MED_COMMENT_SIZE+1]=""; ret = MEDfileCommentRd(fid, des);
La routine MEDfileCompatibility / mficom permet de vérifier :
Si le fichier est au format HDF5
S'il correspond à un fichier MED compatible avec la bibliothèque.
L'appel à cette routine se fait généralement avant l'ouverture du fichier.
med_bool hdfok=MED_FALSE,medok=MED_FALSE; if (MEDfileCompatibility("test18.med",&hdfok,&medok)<0 ) { MESSAGE("Erreur à la vérification de la compatibilité du fichier avec les bibliothèques med et hdf."); return -1; }
Les routines MEDfileNumVersionRd / mfinvr et MEDfileStrVersionRd / mfisvr lisent la version de la bibliothèque MED utilisée à la création du fichier.
MEDfileNumVersionRd / mfinvr lit la version sous forme de trois scalaire majeur,mineur,release
med_int majeur=0, mineur=0, release=0; if (MEDfileNumVersionRd(fid, &majeur, &mineur, &release) < 0) { MESSAGE("Erreur a la lecture du numero de version de la bibliothèque "); return -1; } fprintf(stdout,"- Ce fichier a ete cree avec MED "IFORMAT"."IFORMAT"."IFORMAT" \n",majeur,mineur,release);
MEDfileStrVersionRd / mfisvr lit la version sous forme de chaîne de caractère
char medversion[MED_SNAME_SIZE+1]=""; if ( MEDfileStrVersionRd(fid, medversion) < 0 ) { MESSAGE("Erreur à la lecture de la version du fichier MED"); return -1; } fprintf(stdout,"- Ce fichier a ete cree avec %s\n",medversion);