10. FileInfo deklarieren Dateipfad
FileInfo NewFile = new FileInfo(@quot;C:NewTextFile.txtquot;);
if (NewFile.Exists) Existiert die Datei?
{
NewFile.CopyTo(@quot;C:NewTextFileCopy.txtquot;, true);
}
Überschreiben
wenn Datei bereits
vorhanden Datei kopieren
11. Bietet
Zugriff auf Informationen von Ordnern
Auflistung von Ordnerinhalten
Elementaren Zugriff auf Ordner
15. Bietet Zugriff auf Pfadmanipulationen
Größtenteils oft benutzte
Stringmanipulationen für Dateipfade
Path.Combine für Plattformunabhängigkeit
wichtig!
17. Auf Veränderungen im Dateisystem reagieren
FileSystemWatcher
Enable/disable
Filter Events
Auf Events registrieren
Changed
Created
Deleted
Renamed
18. FileSystemWatcher
static void FileSystemWatcherTest() deklarieren
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @quot;c:quot;;
Zu überwachendes Verzeichnis
watcher.Created += new FileSystemEventHandler(watcher_Changed);
watcher.Renamed += new RenamedEventHandler(watcher_Changed);
watcher.Deleted += new FileSystemEventHandler(watcher_Changed);
watcher.Changed += new FileSystemEventHandler(watcher_Changed);
watcher.EnableRaisingEvents = true; Auf Events
}
Eventauslösung
aktivieren registrieren
static void watcher_Changed(object sender, FileSystemEventArgs e)
{
Console.WriteLine(quot;Directory changed(quot; + e.ChangeType + quot;): quot; + e.FullPath);
}
Auf Änderungen
reagieren
19. Zugriff auf Datenströme
Stream Objekt
Stream Klassen
▪ MemoryStream
▪ CryptoStream
▪ NetworkStream
▪ GZipStream
Zugriff über StreamWriter / StreamReader
20. Zugriff auf Streams wie
auf ein Videoband
Abstraktion für
sequentielle
Datenvorgänge
21.
22. FileStream Objekt erstellen
Zu öffnende Datei bestimmen
mit Konstruktor
mit File.Open
FileMode festlegen
Öffnen
Schreiben
▪ Erstellen
▪ Anhängen
23. statische Methoden für
Erzeugung von Datenstreams
▪ FileAccess
▪ FileMode
Einfache Dateimanipulation
▪ Kopieren
▪ Löschen
▪ Existenz prüfen
▪ Größe
▪ Etc.
24. Statische Methoden für
Erzeugung von Verzeichnissen
Verändern von Verzeichnissen
Löschen von Verzeichnissen
Abfragen von Verzeichnisattributen
25. Schreiben / Lesen von Text in einen
beliebigen Stream
Zeichen
Zeile
Absatz
Bis zum Ende
Übergabe eines Stream Objekts
Benutzung wie Console
Gesamten Inhalt auslesen mit ReadToEnd()
26. Datei erstellen mit File
StreamWriter deklarieren Klasse
StreamWriter Tex;
Tex = File.CreateText(quot;C:NewTextFile.txtquot;);
Wert schreiben
Tex.WriteLine(quot;Hello World with StreamWriterquot;);
Console.WriteLine(quot;File with name: quot; +
((FileStream)Tex.BaseStream).Name + quot; was written succesfullyquot;);
Tex.Close();
BasisStream abfragen
StreamWriter schließen
27. StreamReader deklarieren
StreamReader re;
re = File.OpenText(quot;C:NewTextFile.txtquot;);
Console.WriteLine(re.ReadToEnd());
re.Close();
Datei öffnen mit File Klasse
StreamReader schließen
Inhalte der Datei ausgeben
28. Schreiben / Lesen von binären Daten in einen
beliebigen Stream
Gleiches Handling wie StreamWriter / Reader
29. FileStream erstellen
FileStream BinaryStream = File.Create(@quot;C:NewBinary.binquot;);
BinaryWriter bTex = new BinaryWriter(BinaryStream);
bTex.Write(quot;this is binaryquot;); BinaryWriter mit
bTex.Write(true); Stream
bTex.Write('4'); initialisieren
bTex.Close();
Daten in
Stream schließen Stream
schreiben
30. FileStream erstellen
FileStream newFile =
File.Open(@quot;C:NewBinary.binquot;, FileMode.Open);
BinaryReader reader = new BinaryReader(newFile);
string s = reader.ReadString(); BinaryReader mit
bool b = reader.ReadBoolean(); Stream
char c = reader.ReadChar(); initialisieren
reader.Close();
Daten aus
Stream schließen
Stream
lesen
31. Warum
Schreiben auf Festplatte oft inperfomant
Kein Erstellen von temporären Dateien erwünscht
Benutzbar mit StreamWriter / Reader
Handling wie FileStream
32. MemoryStream memStrm = new MemoryStream();
MemoryStream deklarieren
StreamWriter writer = new StreamWriter(memStrm);
writer.WriteLine(quot;Helloquot;);
writer.WriteLine(quot;Goodbyequot;);
Daten
Schreiben Stream an Writer übergeben
schreiben writer.Flush();
erzwingen
FileStream theFile = File.Create(@quot;c:inmemory.txtquot;);
memStrm.WriteTo(theFile);
Stream in
writer.Close(); Datei
theFile.Close(); schreiben
memStrm.Close();
33. Warum
FileStream schreibt direkt auf Festplatte
▪ Inperfomant
Hybride Mischung aus MemoryStream &
FileStream
Kompatibel mit StreamWriter / Reader
Handling wie FileStream
34. FileStream
erstellen
FileStream newFile = File.Create(@quot;c:test.txtquot;);
BufferedStream buffered = new BufferedStream(newFile);
StreamWriter writer = new StreamWriter(buffered);
writer.WriteLine(quot;Some dataquot;);
FileStream
writer.Close();
übergeben
BufferedStream
deklarieren
StreamWriter mit
BufferedStream
erstellen
35. Speichern von Rohdaten benötigt viel Platz
Kompression – ein wichtiges Feld der
Informatik
Durch Kompression wird mehr Bandbreite
ermöglicht als durch Hardwareoptimierung
Digitales Zeitalter setzt auf Kompression
Eingebaute Kompression in C#
DeflateStream
GZipStream
NameSpace: System.IO.Compression
36. Gleicher Kompressionsalgorithmus
Ähnlicher Umgang
GZipStream
Header mit zusätzlichen Informationen
▪ Bessere Kompatibilität
Für Verteilung von Komprimierten Daten
Arbeit auf mehreren Platformen
DeflateStream
verzichtet auf zusätzliche Informationen
▪ Geringerer Speicherverbrauch
Single System Kompression
37. Handling wie FileStream
Wrapping um bestehenden FileStream
CompressionMode Enum als
Konstrukturargument
38. FileStreams
FileStream sourceFile = File.OpenRead(@quot;c:test.txtquot;); erstellen
FileStream destFile = File.Create(@quot;c:test.zipquot;);
GZipStream GZipStream =
new GZipStream(destFile, CompressionMode.Compress);
int theByte = sourceFile.ReadByte();
while (theByte != -1) GZipStream um
{ FileStream
GZipStream.WriteByte((byte)theByte); wrappen
theByte = sourceFile.ReadByte();
}
GZipStream.Close();
sourceFile.Close(); Daten
destFile.Close(); schreiben
42. OpenFileDialog
deklarieren
OpenFileDialog NewFileDialog = new OpenFileDialog();
NewFileDialog.Filter = quot;Textdateien (*.txt)|*.txt|Alle Dateien
(*.*)|*.*quot;;
if (NewFileDialog.ShowDialog() == DialogResult.OK) Filter festlegen
{
string s = NewFileDialog.FileName;
MessageBox.Show(s);
}
Dateinamen Result abfragen
abfragen
43. SaveFileDialog
deklarieren
SaveFileDialog NewFileDialog = new SaveFileDialog();
NewFileDialog.Filter = quot;Textdateien (*.txt)|*.txt|Alle Dateien
(*.*)|*.*quot;;
if (NewFileDialog.ShowDialog() == DialogResult.OK) Filter festlegen
{
string s = NewFileDialog.FileName;
MessageBox.Show(s);
}
Result abfragen
Dateinamen
abfragen
44. Warum
Direkter Zugriff auf das Dateisystem birgt Risiken
SandBox Konzept bietet optimalen Tradeoff
zwischen Sicherheit und Funktion
IsolatedStorageFile Klasse
Erstellung eines Stores
NameSpace: System.IO.IsolatedStorage
45. Scope definiert den Kontext des Stores
Assembly / Machine
▪ Spezifiziert für die Maschine / Assembly
▪ Anwendungsdaten
▪ GetMachineStoreForAssembly()
Assembly / User
▪ Spezifiziert für die Assembly / User
▪ Userbezogene Daten
▪ GetUserStoreForAssembly()
46. Wie FileStream aber
Speziell um Dateien aus Isolated Storage zu lesen
Kompatibel mit StreamReader / Writer
47. Isolated Storage
anfordern
IsolatedStorageFile userStore =
IsolatedStorageFile.GetUserStoreForAssembly(); Isolated FileStream
erstellen
IsolatedStorageFileStream userStream = new
IsolatedStorageFileStream(quot;UserSettings.setquot;, FileMode.Create,
userStore);
StreamWriter userWriter = new StreamWriter(userStream);
userWriter.WriteLine(quot;User Prefsquot;);
userWriter.Close();
Daten in Stream
schreiben
48. Isolated Storage ist wie ein virtuelles
Laufwerk
Ordnerstruktur
Dateistruktur
Abrufen von Ordnerliste mit
GetDirectoryNames()
Abrufen von Dateiliste mit GetFileNames()