next up previous contents index
Next: Læse og skrive i Up: Input- og output filer Previous: Input- og output filer   Contents   Index


Åbne og lukke filer

Inden det er muligt at læse eller skrive i en fil skal filen formelt åbnes. Efter brug skal filen igen formelt lukkes. At en fil skal åbnes består i at computeren får lokaliseret filen og sat rettighederne for tilgangen til filen. Skal der udelukkende skrives eller læses fra filen? Eller begge dele? Hvis filen er åbnet med rettigheder til at læse og der gøres forsøg på at skrive i filen vil det resultere i en fejlmeddelelse. Det er en beskyttelse af filen at disse rettigheder sættes. En fil kan kun åbnes af en bruger af gangen. Det kan lyde trivielt, men på flerbrugersystemer (netværk), er det en yderligere beskyttelse, at filen kun kan åbnes af en ad gangen. Ligelede hvis den samme bruger forsøger at åbne den samme fil to gange vil beskyttelsen igen træde i kraft og resultere i en fejlmeddelelse.

Eksempel

Der er oprettet en datafil med navnet minfil.dat. På denne fil ønskes data lagt ud, hentet ind fra og overført til en matrix i MATLAB. Først skal minfil.dat åbnes. På kommandolinien skrives:
      fid = fopen('minfil.dat', 'r+');
De enkelte citationstegn er vigtige og fortæller MATLAB at her er tale om en fil og ikke en indbygget kommando. Det i citationstegn angivne 'r+' betyder, at filen skal åbnes for at læse OG skrive i. For kun at skrive i filen tastes 'w' og for kun at læse tastes 'r'. Variabelen fid er en såkaldt fil-identifikator. Man kan tænke på denne som en pil, der hele tiden peger på filen i lageret. Denne identifikator kan benyttes som argument for bl.a læse, skrive og lukke funktionerne. Men identifikatoren tildeles også en værdi, der returneres af fopen-funktionen. Hvis åbning lykkes gives værdien 0 (sand) og -1 (falsk) hvis det ikke lykkedes. Efter åbningen er filen klar til at blive læst fra.

Efter endt brug skal filen nu lukkes. Dette gøres ved fclose-funktionen. På kommandolinien skrives :

      fclose(fid)
Der gælder de samme forhold for fclose som for fopen. Hvis lukningen lykkes returneres værdien 0 og hvis ikke værdien -1. Både for fopen og fclose indikerer værdien -1, at der er en fejl. Den ønskede kommando kunne ikke udføres. Man kan være heldig, at der gives en fejlmeddelelse, som man med held kan blive klogere af. Denne fejlmeddelelse kan kaldes frem ved at taste ferror(fid). En fejl kunne f.eks. være, at man prøvede at åbne en fil, der ikke eksisterer.

Eksemplet fortsætter på side [*]

$ \Box$


next up previous contents index
Next: Læse og skrive i Up: Input- og output filer Previous: Input- og output filer   Contents   Index
Bo Jakobsen 2000-08-15