Bestand (computer)

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Een elektronisch bestand (computerbestand), kortweg bestand (Engels: file) is een geordende verzameling van gegevens in elektronische vorm, die door het elektronische apparaat (computer, smartphone en dergelijke) onder één naam kan worden behandeld en aangesproken.

De wijze waarop het bestand is geordend is bij wijze van conventie vaak te herkennen aan de uitgang van de naam van het bestand. Met behulp van het juiste computerprogramma (de juiste software) kan een bestand worden gelezen of bewerkt. Om een bestand na het uitzetten van het elektronische apparaat niet kwijt te raken dient het te worden opgeslagen in een niet-vluchtig geheugen. Dat kan lokaal op een harde schijf, een flashgeheugen (vaak uitneembaar: geheugenstaaf of geheugenkaart), een cd-rom, een dvd zijn, of op een locatie waarmee de computer via een netwerk in verbinding staat.

Bewerkingen[bewerken]

Bewerkingen op bestanden bestaan vooral uit het lezen van en het schrijven naar een bestand. Daarnaast kunnen bestanden worden aangemaakt (aanvankelijk met lengte nul) en worden gewist. De gebruiker kent bestanden vooral als 'zijn gegevens', de brief die hij heeft geschreven, de inhoud van zijn elektronische kaartenbak, zijn spreadsheet, de foto die zij maakte van haar kinderen; maar nagenoeg alle gegevens die de computer nodig heeft of kan verwerken zijn als bestanden op de harde schijf aanwezig, ook de programma's.

De namen van bewerkingen zijn vaak gebaseerd op handelingen die vroeger gepaard gingen met het positioneren van een lees-/schrijfkop op een rol magnetische band. We onderscheiden onder andere:

  • aanmaken (create);
  • openen (open);
  • sluiten (close);
  • wissen (delete of unlink);
  • positioneren (seek);
  • samenvoegen (merge);
  • verlengen (append): gegevens achteraan het bestand bijschrijven;
  • lezen (read);
  • schrijven (write);
  • flushen (flush): naar schijf of band schrijven van de in de schrijfbuffer aanwezige gegevens.

Deze bewerkingen bestaan vooral uit lezen van de file en schrijven naar de file, waarbij de bewerking plaatsvindt bij het op dat moment geldende adres (de offset), waarnaar door de impliciete file pointer verwezen wordt. Deze file pointer blijft na de bewerking aan het eind van de gelezen of geschreven data staan. Lezen is non-destructief, maar bij schrijven wordt de eerdere inhoud op die plaats overschreven, of de file wordt langer, bij merge en append.

Daarnaast kunnen files worden aangemaakt (aanvankelijk met lengte nul) en worden gewist. Voor lezen of schrijven moet de file eerst worden geopend, waarbij het besturingssysteem aan het programma een file handle (een getal) teruggeeft die bij het aanvragen van verdere bewerkingen moet worden opgegeven. Bestandsbewerkingen worden normaliter door het besturingssysteem afgehandeld naar aanleiding van functieaanroepen van het programma. Dit gebeurt via een deel van het besturingssysteem dat het bestandssysteem heet. Na het openen staat de file pointer (de offset vanaf het begin) meestal op nul, maar bij aanvullen (append) staat deze aan het eind van de file. Er kan een file seek worden gedaan waarmee de file pointer op een bepaalde waarde wordt gezet. Een file die klaar is, moet ook weer worden gesloten. De meeste van deze bewerkingen zijn voor de gebruiker tegenwoordig niet meer zichtbaar.

Bestanden zijn geschikt om snel grote hoeveelheden gegevens in een bepaalde volgorde weg te schrijven en in diezelfde volgorde ook weer snel te lezen. Ze zijn niet erg geschikt voor gegevens die voortdurend in andere volgordes moeten worden opgeroepen. Het lezen van de volgende byte kost een minimale hoeveelheid tijd, maar het lezen van de vorige byte kost doorgaans een heleboel tijd. Dit omdat er dan eerst een seek moet worden gedaan. In de tijd van de magneetband betekende dat: band stilzetten, terugspoelen naar het begin, zoekend vooruitspoelen tot de vorige plaats minus 1, en lezen. Zie b.v. ook de datatypen stack, queue en array. Ook in de tijd van de harde schijf is het sequentieel lezen van een file nog steeds honderden malen efficiënter dan door middel van random access.

Organisatie[bewerken]

Bestanden worden meestal georganiseerd in directory's (ook wel mappen of folders) genaamd. Deze kunnen beschouwd worden als bestanden met als inhoud de namen van een aantal bestanden en verwijzingen naar deze bestanden. Een verzameling van directory's op een bepaald medium of op een systeem wordt een bestandssysteem genoemd.

Types[bewerken]

Er zijn verschillende soorten bestanden, ook wel bestandstypes genoemd. Deze indeling naar bestandstype is in principe gebaseerd op de inhoud van een bestand. Op Microsoft Windows systemen kan men het bestandstype herkennen aan de bestandsextensie (meestal de laatste 3 tekens van de bestandsnaam). Dit is overigens alleen een conventie, een bestand kan een andere extensie hebben dan bij zijn inhoud past. Op systemen die op UNIX zijn gebaseerd (zoals Linux en de Berkeley Software Distribution (BSD)) hebben bestandsnamen niet altijd een extensie en kan men het "file" commando gebruiken om het bestandstype te weten te komen. Ook bestaan er op zulke systemen weer andere typen bestanden, zoals de dot-bestanden.

Bestanden kunnen soms ook herkend worden aan een zogenaamd 'magic number', een afgesproken sequentie van karakters aan het begin van een bestand. Het hiervoor genoemde UNIX commando file maakt hier ook gebruik van. Omdat magic numbers voor gebruikers onzichtbaar zijn worden er nogal eens vrij typische constructies gebruikt. Een aantal voorbeelden:

  • Een Java class file begint met het 0xCAFEBABE (hexadecimaal).
  • Een Windows executable (het PE formaat) begint met de ASCII string MZ, de initialen van de ontwerper van het formaat, Mark Zbikowski.

Een andere indeling naar type kan worden gemaakt op grond van de manier waarop een bestand benaderd kan worden. Hierbij kunnen sequentiële en geïndexeerde bestanden worden onderscheiden. In een geïndexeerd bestand kan op basis van een sleutel direct een bepaald gedeelte van het bestand gelezen worden. Een voorbeeld hiervan is een VSAM-bestand.

Zie ook[bewerken]