Bestanden Hoofdstuk 18 Hoofdstuk 18
Visual Basic .NET voor studenten Inleiding Opslaan van gegevens RAM Korte toegangstijd Duurder Tijdelijk Opslagmedia Langere toegangstijd, maar grotere capaciteit Goedkoper Relatief permanent Visual Basic .NET voor studenten Hoofdstuk 18
De basisbegrippen van streaming Een bestand wordt beschouwd als een stroom gegevens die in één doorlopende (sequentiële) beweging wordt gemanipuleerd Een bestand is een “system resource”. Niet vergeten te sluiten! Hoe kan je dit garanderen? Open bestand Inlezen gegevens van “stream” of Wegschrijven gegevens naar “stream” Bestand sluiten Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Overzichtsdiagram Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Bestandsuitvoer Imports System.IO … Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click ' write some lines of text to the file Dim outputStream As StreamWriter = _ File.CreateText("c:\myfile.txt") outputStream.WriteLine("This file will") outputStream.WriteLine("contain 3") outputStream.WriteLine("lines of text.") outputStream.Close() End Sub Visual Basic .NET voor studenten Hoofdstuk 18
Visual Basic .NET voor studenten Bestandsuitvoer Imports System.IO File.CreateText(bestandsnaam) Maakt een StreamWriter object naar een tekstbestand Als dit bestand nog niet bestaat, wordt het aangemaakt. Anders wordt het bestaande bestand overschreven outputStream.WriteLine(string) Schrijft de string naar de stream (en dus in het bestand) en sluit af met een NewLine teken outputStream.Close() Sluit de stream af Dit statement zou beter in een Finally block staan Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Bestandsinvoer Imports System.IO … Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click 'read the file line-by-line Dim inputStream As StreamReader = _ File.OpenText("c:\myfile.txt") Dim line As String line = inputStream.ReadLine() While line <> Nothing TextBox1.AppendText(line & NewLine) End While inputStream.Close() End Sub Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Bestandsinvoer Imports System.IO File.OpenText(bestandsnaam) Maakt een StreamReader object naar een (bestaand) tekstbestand Als dit bestand nog niet bestaat: FileNotFoundException inputStream.ReadLine() Leest een (volgende) regel uit het bestand tot Nothing wordt teruggegeven inputStream.Close() Sluit de stream af Dit statement zou beter in een Finally block staan Visual Basic .NET voor studenten
FileStreamDemo Openen en tonen Toevoegen aan bestand Bestand overschrijven Visual Basic .NET voor studenten
Visual Basic .NET voor studenten FileStream Meer algemene (.NET) manier om een stream naar een bestand te verkrijgen Verschillende wijzen van toegang FileAccess FileMode Eens je een FileStream object hebt, kan je ermee een StreamReader of StreamWriter mee aanmaken Visual Basic .NET voor studenten
Visual Basic .NET voor studenten FileMode Append: open op het einde of nieuw Create: nieuw of overschrijf CreateNew: nieuw of IOException Open: open of FileNotFoundException OpenOrCreate: open of nieuw Truncate: openen en overschrijven Visual Basic .NET voor studenten
Visual Basic .NET voor studenten FileAccess Read: enkel lezen Write: enkel schrijven ReadWrite: lezen en schrijven Visual Basic .NET voor studenten
Visual Basic .NET voor studenten FileStream Demo Private Sub OpenButton_Click(...) Handles OpenButton.Click Dim reader As StreamReader = Nothing ... Try fileStream = New FileStream(FileNameTextBox.Text, _ FileMode.Open, _ FileAccess.Read) reader = New StreamReader(fileStream) ContentTextBox.Text = reader.ReadToEnd() Catch ex As FileNotFoundException MessageBox.Show(FileNameTextBox.Text & " niet gevonden!") Visual Basic .NET voor studenten
Visual Basic .NET voor studenten FileStream Demo ... Finally If Not (reader Is Nothing) Then reader.Close() End If If Not (fileStream Is Nothing) Then fileStream.Close() End Try Bestudeer zelf de overige code van deze demo Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Bestanden doorzoeken Bestudeer de broncode Waarom de dubbele conditie in de While lus? Wat gebeurt er als de naam niet wordt gevonden? Visual Basic .NET voor studenten
Bestanden en exceptions Vrijwel elke IO operatie kan mislopen FileNotFoundException IOException Kijk dus goed naar de online documentatie en vang indien nodig de exception op Zeker: streams afsluiten (Close) in een Finally block. Anders zou dit kunnen aanleiding geven tot memory leaks Visual Basic .NET voor studenten
Visual Basic .NET voor studenten MessageBox Verschillende versies (overloading) MessageBox.Show(boodschap) MessageBox.Show(boodschap, titel) MessageBox.Show(boodschap, titel, knoppen) MessageBox.Show(boodschap, titel, knoppen, pictogram) Vaststellen welke knop geklikt werd DialogResult.Abort DialogResult.Cancel DialogResult.Ignore DialogResult.No DialogResult.None DialogResult.OK ... Visual Basic .NET voor studenten
Visual Basic .NET voor studenten MessageBox MessageBox.Show("The age must be over 18", _ "Age is out of range!", _ MessageBoxButtons.OK, _ MessageBoxIcon.Exclamation) If MessageBox.Show("Do you want to buy this?", _ "CD Purchase", _ MessageBoxButtons.YesNo, _ MessageBoxIcon.Question) = DialogResult.Yes Then MessageBox.Show("user clicked yes") Else MessageBox.Show("user clicked no") End If Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Dialoogvensters Ofwel via ToolBox Ofwel zelf het object aanmaken Gebruik van Filters Eveneens: SaveFileDialog werkt compleet analoog Dim dialog As New OpenFileDialog() dialog.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;" & _ "*.JPG;*.GIF|All files (*.*)|*.*" If dialog.ShowDialog() = DialogResult.OK Then MessageBox.Show("je selecteerde " & dialog.FileName) End If Visual Basic .NET voor studenten
Oefening: ColorDialog Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Een menu creëren MenuStrip in Toolbox selecteren ‘Type Here’ invullen naargelang aantal menu’s en menu items Click event van een item afhandelen Gebruik van &, bv: E&xit sneltoets ALT-x Separators rechtsklik in design mode Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Menu event Private Sub ExitItem_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles ExitItem.Click Application.Exit() End Sub Gebruik Application.Exit() om een programma af te sluiten Eveneens ok, maar “oude” VB: End Visual Basic .NET voor studenten
Visual Basic .NET voor studenten De klasse Directory Faciliteiten om bestanden en mappen te manipuleren. Visual Basic .NET voor studenten
Visual Basic .NET voor studenten De klasse Directory GetFiles(path) Retourneert een array van Strings; de bestandsnamen van files in directory path GetDirectories(path) Retourneert een array van Strings; de namen van de directories in directory path Bestudeer zelf de andere methodes in de klasse Directory Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Meerdere formulieren Een nieuw formulier kan je toevoegen door rechtklik op het project Add Windows Form Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Meerdere formulieren De form die opgestart wordt bij de programmastart, kan je instellen in de project properties (Startup form) Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Meerdere formulieren Een Form is een klasse, dwz dat je een instantie moet maken om een form te openen. Vervolgens roep je op dit object de methode Show() op. Als je vanuit één Form een andere form wil manipuleren, dien je referenties naar deze objecten door te geven (SetFormReferentie() in de demo) Een Form verbergen zonder de applicatie af te sluiten doe je met Hide() Visual Basic .NET voor studenten
Visual Basic .NET voor studenten Meerdere formulieren Demo Visual Basic .NET voor studenten