280 likes | 430 Views
Bestanden. Hoofdstuk 18. Inleiding. Opslaan van gegevens RAM Korte toegangstijd Duurder Tijdelijk Opslagmedia Langere toegangstijd, maar grotere capaciteit Goedkoper Relatief permanent. De basisbegrippen van streaming.
E N D
Bestanden Hoofdstuk 18
Inleiding • Opslaan van gegevens • RAM • Korte toegangstijd • Duurder • Tijdelijk • Opslagmedia • Langere toegangstijd, maar grotere capaciteit • Goedkoper • Relatief permanent Visual Basic .NET voor studenten
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” ofWegschrijven gegevens naar “stream” • Bestand sluiten Visual Basic .NET voor studenten
Overzichtsdiagram Visual Basic .NET voor studenten
Bestandsuitvoer ImportsSystem.IO … Private Sub Button1_Click( _ ByValsender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click ' writesomelines 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
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
Bestandsinvoer ImportsSystem.IO … Private Sub Button1_Click( _ ByValsender 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() Whileline <> Nothing TextBox1.AppendText(line & NewLine) line = inputStream.ReadLine() End While inputStream.Close() End Sub 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
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
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
FileAccess • Read: enkel lezen • Write: enkel schrijven • ReadWrite: lezen en schrijven 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
FileStream Demo ... Finally If Not (reader Is Nothing) Then reader.Close() End If If Not (fileStream Is Nothing) Then fileStream.Close() End If End Try Bestudeer zelf de overige code van deze demo 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
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
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
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
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
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
De klasse Directory • Faciliteiten om bestanden en mappen te manipuleren. 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
Meerdere formulieren Een nieuw formulier kan je toevoegen door rechtklik op het project Add Windows Form 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
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
Meerdere formulieren • Demo Visual Basic .NET voor studenten