Download præsentationen
Præsentation er lastning. Vent venligst
Offentliggjort afLasse Frandsen Redigeret for ca. et år siden
1
1 Filer - intro Data-hierarki Filer og strømme (eng.: streams) af bytes Klasserne File og Directory Oprettelse af sekventiel tekstfil Læsning af data fra sekventiel tekstfil Serialization & deserialization (kun overordnet) Steen Jensen, efterår 2013
2
Variable og arrays tilbyder temporær opbevaring af data Filer & databaser tilbyder varig / persistent opbevaring af data 2
3
For at kunne hente specifikke records vælges en record key i hver record En typisk måde at organisere filer på er som en sekventiel fil sorteret efter record key 3
4
C# ser hver fil som en strøm af bytes En end-of-file marker angiver afslutningen på filen 4 Namespace System.IO inkluderer stream classes såsom: StreamReader (tekst input fra fil) StreamWriter (tekst output til fil)
5
Klasserne File og Directory giver mulighed for at manipulere med filer og mapper 5
6
6
7
7 Eksemplet udskriver enten indholdet af en tekstfil eller lister filnavne i en mappe, afhængig af, om der indtastes et filnavn eller et mappenavn Eksemplet bruger GUI (gennemgås først i kap. 14), men her er nogle få bemærkninger: Linje 10: partial class - se s. 559 i bogen (= en klasse opdelt i flere filer, der samles til en enkelt klasse af compileren) Linje 19: eventhandler til tekstboks – se s. 562 i bogen
8
8 Linje 19-75: metoden inputTextBox_KeyDown kaldes, hver gang der indtastes et tegn i tekstboksen Linje 22: undersøger, om brugeren har trykket Enter Hvis Enter, undersøges om der er indtastet et filnavn (linje 28) Hvis filnavn indtastet, udskrives indholdet af tekstfilen Hvis ikke filnavn indtastet, undersøges, om der er indtastet et mappenavn Hvis mappenavn indtastet, udskrives alle filnavne i mappen Hvis ikke mappenavn indtastet, udskrives en fejlmeddelelse Hvis ikke Enter, gøres ingenting Linje 38: klassen StreamReader benyttes til at læse fra tekstfil Linje 40: metode ReadToEnd læser hele indholdet af tekstfil som en streng Linje 59: metode GetDirectories henter indhold af mappe som et array
9
9 Eksemplet Searching Directories with LINQ s. 715n – 720ø Eksemplet benytter LINQ (kan læses i kap. 9)
10
10 Eksemplet kan oprette records med bankoplysninger (kontonr, fornavn, eftrnavn, saldo) i en tekstfil Eksemplet benytter tre klasser – BankUIForm (GUI, fig. 17.7), Record (til opbevaring af bank-record, fig. 17.8), CreateFileForm (skriver til tekstfil, fig. 17.9) Hovedvægt vil blive lagt på fig. 17.8 + 17.9 – i stedet for GUI kan simple WriteLine + ReadLine benyttes Figur 17.8 linje 21-24 + 27-34: overloaded constructor til henholdsvis startværdier og overførte parameterværdier
11
11 Figur 17.9: Linje 12: klassen StreamWriter benyttes til at skrive til tekstfil Linje 25: filnavnet gemmes i variablen fileName Linje 44-56: try – opret nyt objekt af typen FileStream og angiv FileMode til Open eller Create, og FileAccess til Write Linje 58-63: catch – IOException Linje 69-126: eventhandler til enter-knap Linje 75: opret objekt af klassen Record Linje 100-102 try – skriv record i tekstfil med metoden WriteLine Linje 112-116: catch - IOException Linje 118-122: catch – FormatException Linje 129-148: eventhandler til exit-knap Linje 134-138: try - luk tekstfil med metoden Close Linje 140-144: catch – IOException Linje 147: afbryd app med metoden Exit
12
12 Eksemplet læser tekstfilen oprettet i eksempel 17.7-17.9 Hovedvægt vil blive lagt på filbehandling og ikke så meget GUI Linje 12: klassen StreamReader benyttes til at læse fra tekstfil Linje 25: filnavnet gemmes i variablen fileName Linje 44-55: try – opret nyt objekt af typen FileStream og angiv FileMode til Open, og FileAccess til Read. Der oprettes et nyt objekt af typen StreamReader Linje 56-61: catch – IOException Linje 67-105: eventhandler til next-knap Linje 69-99 try – læs næste record fra tekstfil med metoden ReadLine eller luk tekstfil (ved EOF) med metoden Close Linje 100-104: catch - IOException
13
13 Afsnit 17.7 Case Study: Credit Inquiry Program s. 733n – 739m Eksemplet benytter reposition af file-position pointer
14
14 Gennemgås kun overordnet her Nogle gange ville det være nemmere at læse eller skrive hele objekter C# indeholder en mekanisme, der hedder object serialization, som betyder, at et objekt repræsenteres som en sekvens af bytes, som inkluderer både objektets data og typen af data gemt i objektet Efter et serialized objekt er blevet skrevet til en fil, kan det læses fra filen og gøres deserialized – kan sammenligned med kryptering/dekryptering Namespace System.Runtime.Serialization.Formatters.Binary indeholder klassen BinaryFormatter med følgende metoder: Serialize – kan skrive et objekt som et serialized objekt Deserialize – læser repræsentationen fra fil og rekonstruerer det originale objekt Læs/studer efter behov selv fig. 17.13 s. 740 + fig. 17.15 s. 745
15
Prøv at besvare øvelse 17.1 + 17.2 s. 750 uden at se svaret Check derefter dine svar op imod svarene s. 751 15
16
Resten af dagen + fortsæt hjemme: 1. Ex. 17.3 s. 751 2. Ex. 17.8 s. 752 (NB! I stedet for GUI kan simple WriteLine & ReadLine benyttes 3. Implementer brug af filer i Spejdersystemet (til katalogerne) 16
Lignende præsentationer
© 2024 SlidePlayer.dk Inc.
All rights reserved.