13B - Gegevens opslaan in een txt file cw66

Gegevens opslaan in een txt file
Programming C# - II
Week 13B

1 / 17
next
Slide 1: Slide
Applicatie- en mediaontwikkelaarMBOStudiejaar 1

This lesson contains 17 slides, with text slides.

time-iconLesson duration is: 90 min

Items in this lesson

Gegevens opslaan in een txt file
Programming C# - II
Week 13B

Slide 1 - Slide

Waarom
  • Interactie met de 'buitenwereld'
  • Rapporten / koppelingen / serialisatie
  •     Streams worden overal gebruikt maar kunnen soms             complex zijn. 

Slide 2 - Slide

Een bestand is ...
  • een bak met bytes (of zijn het bits?) in een stukje geheugen
  • en tegelijk: een geordende verzameling van gegevens in elek. vorm
  • beheerd door het bestandssysteem (fat/vfat/ntfs/ext4/reiserfs/ZFS)

Slide 3 - Slide

een verzameling bytes
68 6f 69 2c 20 69 6b 20 62 65 6e 20 65 65 6e 20 74 65 6b 73 74 62 65 73 74 61 6e 64  

Slide 4 - Slide

een geordende verzameling van gegevens
hoi, ik ben een tekstbestand  

Slide 5 - Slide

Binair vs text
  • Gigantisch veel soorten bestanden
  • Vanuit C#'s oogpunt maar twee soorten:
  •     binair
  •     text

Slide 6 - Slide

Encoding
  • Vertalen karakters naar bytes en andersom
  • Is relevant!
  • Veel verschillende methoden
  • Was afhankelijk van OS / chip architectuur
  • (default wordt tegenwoordig UTF8 gebruikt)

Slide 7 - Slide

Te[x|ks]t dus (2)...
  • ASCII
  • Unicode (UTF-[8|16|...])
  •   Complexere verwerking (bij UTF8 bv de BOM + aantal bytes)
  •   Meer geheugen
  •   Maar noodzakelijk i.v.m. globalisering
  •   ASCII: 7 bits, 2^7 -> 128, UTF8: 1-4 bytes -> 1.112.064

Slide 8 - Slide

Slide 9 - Slide

Slide 10 - Slide

.Net strings
  • UTF-16 encoding
  • char type is 1 byte
  • 'a' --> 8 bits == 1 byte

Slide 11 - Slide

.net strings (intern)

Slide 12 - Slide

Twee (...) methodes
File.WriteAllText(<pad>,<tekst>[, encoding]);
File.WriteAllLines(<pad><collectie met tekst> [,encoding]);
File.AppendAllText(<pad>,<tekst>[, encoding]);
File.AppendAllLines(<pad><collectie met tekst> [,encoding]);
var sw = new StreamWriter(<pad> [, append, encoding]);
sw.WriteLine(<tekst>);
sw.Write(<tekst>);
  • Instantie nodig
  • Is generieker (zie constructor mogelijkheden)

Slide 13 - Slide

                                   Direct (alles of niets)

using System.IO;
...
File.WriteAllText(@"c:\temp\test.txt", "bla bla bla);
File.WriteAllLines(@"c:\temp\test.txt", new [] {"regel 1", "regel 2"});

            Streams - StreamWriter (controle)

using System.IO;
...
var sw = new StreamWriter("c:\temp\test.txt")
sw.WriteLine("Bla bla");
sw.Write("Bla bla\r\n");
sw.Write($"Bla bla{Environment.NewLine}");

Slide 14 - Slide

Streams - aandachtspunten
  • Flush() / AutoFlush
  • Close()
  • Encoding
  • NewLine

Slide 15 - Slide

Waarom niet altijd File.<methode>
  • File.WriteAll... alleen bestanden via filesystem
  • StreamWriter(-Reader) kan van alles benaderen   
          sockets (netwerk), geheugen (RAM), console, ...
  • (File.<methode> is static dus testen is lastiger)
          (unittesten lastig als filesystem gebruikt wordt)

Slide 16 - Slide

En verder
  • Aan de slag
  • Toetsbespreking
  • Voorbereiden voor de les van volgende week.
       (werken met MySQL in C#) 

Slide 17 - Slide