# Bestanden
## Inleiding bestanden

Soms is het nodig om, als je een programma stopt, de gegevens te bewaren om ze de volgende keer weer in te lezen. Dit kunnen gegevens zijn waarmee je aan het werk was, maar ook instellingen van het programma. Als een programma stopt, wordt het samen met alle gegevens verwijderd uit het geheugen. Daarom is het nodig om gegevens die je wilt bewaren op te slaan op de harde schijf of een USB-stick.
Het eenvoudigste soort bestand is het tekstbestand. Daarin sla je teksten op (Strings). Zo'n bestand kun je in de Verkenner openen en lezen en zelfs aanpassen. Een tekstbestand lijkt op een boek: het bestaat uit regels en iedere regel bestaat uit één of meer tekens en heeft (in principe) een onbeperkte lengte. Als je zo'n bestand leest of schrijft doe je dat per regel. En bij het schrijven heb je de keuze om een bestaand bestand te overschrijven of de regel(s) toe te voegen aan een bestaand bestand.
Zo'n tekstbestand wordt ook wel sequentieel bestand genoemd. Sequentieel geeft aan dat lezen en schrijven regel voor regel begint, van het begin tot het einde. Een sequentieel bestand kan behalve tekst ook andere informatie bevatten.
De naam van zo'n tekstbestand kan vast opgenomen in het programma, maar de programmeur kan de gebruiker ook de mogelijkheid geven om een bestandsnaam te kiezen door middel van de bekende dialoogschermen "Bestand Openen" en "Bestand Opslaan".
Het is ook mogelijk om bestanden te gebruiken met een structuur. Stel je voor dat iedere regel de gegevens van één persoon bevat met naam, voorletters, adres, postcode en woonplaats. Deze gegevens noemen we vaak velden. Er zijn dan twee manieren om deze tekst op te slaan:
* de gegevens hebben een vaste lengte (b.v. naam 30 tekens, voorletters 5 tekens, enz.) Na het lezen van een regel kun je aan de hand van de positie binnen de regel de velden bepalen (naam = positie 1 t/m 30, voorletters = positie 31 t/m 35, enz.)
* de gegevens hebben geen vaste lengte, maar worden gescheiden door een speciaal teken, bijvoorbeeld een komma. Een regel ziet er dan bijvoorbeeld zo uit: "Janssen,JJM,1234AA,Amsterdam"
Om te beginnen wordt een eenvoudige manier gegeven om met bestanden te werken, maar er zijn ook ingewikkelder methoden, die echter meer mogelijkheden bieden. Deze worden later behandeld.
Voor het werken met sequentiële bestanden bestaan met de volgende methoden:
FileOpen
Met deze methode open je een bestand. Het formaat is:
bestandsnummer is een nummer (1, 2, enz.). FileOpen koppelt de bestandsnaam aan het opgegeven nummer. In andere methoden wordt het nummer gebruikt om aan de bestandsnaam te refereren.
bestandsnaam is de naam van het bestand, zo nodig inclusief het pad.
OpenMode heeft aan hoe je het bestand wilt benaderen. Mogelijk zijn: Append, Binary. Input, Output of Random. Je geeft dit aan met OpenMode.bewerking, b.v. OpenMode.Input.
FileClose
Met deze methode sluit je het bestand. Het formaat is:
Hierbij is bestandsnummer hetzelfde als bij FileOpen.
LineInput
Met deze methode lees je de volgende regel uit een bestand. Het formaat is:
Hierbij is bestandsnummer hetzelfde als bij FileOpen.
Lezen kan alleen als het bestand is geopend in de mode FileMode.Input.
Eof
Met deze methode test je of je bij het lezen aan het einde van het bestand bent gekomen. Het formaat is:
Hierbij is bestandsnummer hetzelfde als bij FileOpen. Je gebruikt deze methode als volgt:
Of, in een lus:
PrintLine
Met deze methode schrijf je een regel naar een bestand. Het formaat is:
Hierbij is bestandsnummer hetzelfde als bij FileOpen en regel is een String-variabele of een tekst tussen aanhalingstekens.
Schrijven kan alleen als het bestand is geopend in de mode FileMode.Output ofFileMode.Append.
FreeFile
Soms heb je een aantal bestanden open en/of varieert het aantal geopende bestanden. Je weet dan niet welk bestandsnummer je kunt gebruiken. Daarom kun je met FreeFile het volgende vrije nummer opvragen. Je gebruikt het op de volgende manier: