Jürgen Bayer. Das C# 2010 Codebook

Ähnliche Dokumente
Jürgen Bayer. MDI-Anwendungen in C#

Programmieren in Java

Programmieren lernen in Visual C#.NET

Visual C# 2008 Kochbuch

Windows das erste Mal

Installation und Benutzung AD.NAV.ZipTools

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Freelance DeltaPLC-Tool. Version 4 / Version 5

C# - PROGRAMME MIT PLUGINS ERWEITERN

Ein + vor dem Ordnernamen zeigt an, dass der Ordner weitere Unterordner enthält. Diese lassen sich mit einem Klick (linke Maustaste) anzeigen.

Vorkurs C++ Programmierung

Beispiel: Methode mit einem Fehler. Diese Methode wird problematisch, wenn von außen eine Dauer von 0 Sekunden angegeben wird, etwa im Aufruf

von Anja Austermann Drag and Drop

7 Dateien und Datenströme (Streams)

Jürgen Bayer. Anonyme Methoden, Lambda-Ausdrücke und Ausdrucksbäume in.net

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

HTL-Website. TYPO3- Skriptum II. Autor: RUK Stand: Gedruckt am: - Version: V0.1 Status: fertig. Qualitätsmanagement

PIWIN 1 Übung Blatt 5

Backup und Datensicherung von Plone-Systemen. Vortragender: Christian Becker

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren lernen in Visual Basic.NET

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Buch-Add-Ons. Jürgen Bayer. Object Pascal-Tipps und Tricks. 1 Konvertieren und auf numerische Werte überprüfen 2

Novell Filr Inhaltsverzeichnis

Probeklausur: Programmierung WS04/05

1 Computer- Chinesisch

Java-Schulung Grundlagen

Java Programmierung auf der Konsole / unter Eclipse

Bedienungsanleitung. Version 2.0. Aufruf des Online-Update-Managers. Bedienungsanleitung Online-Update Stand Juni 2010

Einführung in die Programmierung für Wirtschaftsinformatik

Programmieren in Java

Einführung in die Informatik Files and Streams

Studentische Lösung zum Übungsblatt Nr. 7

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Moderne C-Programmierung

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Christian Immler. BlackBerry. 10 Lektionen für Einsteiger

Symbole, die in diesem Handbuch verwendet werden

[G04] Dateiverwaltung - Beispiele

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger

IT Services Support. Archivierung Apple Mail

3 Objektorientierte Konzepte in Java

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

5.13 Umgang mit Fehlern

Diese Anleitung bezieht sich auf FixFoto, V In älteren oder neueren Versionen könnte die Arbeitsweise anders sein.

Programmierung eines NewsTickers in Java

Advanced PowerShell Sensor Dokumenten-Version: 2.0, Letzte Revision: , Letzter Bearbeiter: Patrick Schmidt

Einführung in Javadoc

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

Objektorientierte Programmierung mit C++ Vector und List

Primitive Datentypen

Kapitel 5: PowerShell-Skripte

Programmierkurs Java

2 Software Grundlagen 2.3 Windows 7

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

Übung 4: Schreiben eines Shell-Skripts

Kurzanleitung. HTML5-Client. für Cortado Corporate Server 6.0. Cortado AG Alt-Moabit 91 a/b Berlin Germany/ Alemania

Persönliche Ordner (*.pst) Persönliche Ordner Best practice für Desktop-Nutzer Best practice für Laptop-Nutzer

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

ACDSee 10 Tutorials: Fotos herunterladen mit dem Fotoimport-Assistent

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch

Dateiverwaltung mit dem Windows-Explorer

PHP Übungsaufgabe 3 1 / 5. Doing Web Apps. PHP Übungsaufgabe 3

Tobias Weltner. PowerShell-Scripting fur Administratoren

Installationsanleitung zum QM-Handbuch

Javakurs für Anfänger

Ein Inno Setup Installationsprogramm für eine OpenDCL Anwendung

Auszug aus. C sharp. Galileo Computing. Ein Service von. Tutorial und Referenz. von Eric Gunnerson

3. Firewall-Architekturen

GetName(), GetName(), GetGeschlecht() und AelterWerden().

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

KURZANLEITUNG CLOUD OBJECT STORAGE

Installationsanleitung zum QM-Handbuch

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einführung in die C-Programmierung

Wirtschaftsinformatik I

Praktikum Betriebssysteme 1. Aufgabe (1)

<Trainingsinhalt> C# programmieren

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 14/15. Kapitel 11. Fehler und Ausnahmen 1

Dateien mit dem Windows-Explorer optimal verwalten

:LQGRZV([SORUHU &KULVWLQH%HHU

Einführung in die Cross-Plattform Entwicklung Web Services mit dem Intel XDK

SimpleOOP Opensource OOP Plugin

Ausgabe 1 DE. Nokia und Nokia Connecting People sind eingetragene Marken von Nokia Corporation

12 Dokumente verwalten

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Exceptions: Parameterprüfung import java.io.ioexception;

16 SQL Server-Zugriff per VBA

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG

Erratum des C# 2010 Codebook

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Java Kurs für Anfänger Einheit 5 Methoden

4 Codierung nach Viginere (Lösung)

Transkript:

Jürgen Bayer Das C# 2010 Codebook

382 >> Dateien kopieren 144 Dateien kopieren Dateien können Sie sehr einfach über die Copy-Methode der File-Klasse kopieren. Am ersten Argument übergeben Sie dieser Methode den vollen Namen der Quelldatei, am zweiten den der Zieldatei. Über das dritte Argument legen Sie fest, ob eine vorhandene Datei überschrieben werden soll. Tragen Sie hier true ein, wird eine eventuell vorhandene Datei ohne weitere Warnung überschrieben. Tritt beim Kopieren ein Fehler auf, zum Beispiel weil die Quelldatei gerade geöffnet oder die Zieldatei vorhanden und schreibgeschützt ist, erzeugt Copy eine Ausnahme vom Typ IOException, die Sie abfangen sollten. Listing 255 zeigt das Kopieren einer Datei am Beispiel. Zur Verwendung müssen Sie die Namensräume System und System.IO einbinden. // Variablen für die Argumente der Copy-Methode string sourcefilename =...; string destfilename =...; bool overwrite = true; // Datei kopieren File.Copy(sourceFileName, destfilename, overwrite); catch (IOException ex) // Auf den Fehler reagieren... Listing 255: Einfaches Kopieren einer Datei Wenn Sie am dritten Argument der Copy-Methode false eintragen, erzeugt diese Methode eine Ausnahme vom Typ IOException, falls eine Datei mit identischem Namen bereits existiert. Da diese Ausnahme auch in anderen Fällen generiert wird, können Sie dem Anwender für den Fall, dass eine Datei gleichen Namens bereits vorhanden ist, leider nur eine allgemeine Meldung übergeben. Um etwas flexibler zu sein und den Anwender zu fragen, ob eine vorhandene Datei überschrieben werden soll, überprüfen Sie vor dem Kopieren, ob die Datei existiert. Die Funktion CopyFile in Listing 256 übernimmt diese Aufgabe und wertet daneben auch eventuelle Ausnahmen aus. Die Abfrage nach einer eventuell existierenden Datei gleichen Namens erfolgt über die Exists- Methode der File-Klasse. Im positiven Fall fragt CopyFile den Anwender über die MessageBox- Klasse, ob er die Datei überschreiben will. Wählt der Anwender den Nein-Schalter (was in der Rückgabe von DialogResult.No resultiert), wird die Funktion mit der Rückgabe von false beendet. Ansonsten kopiert CopyFile die Datei über die Copy-Methode der File-Klasse, wobei am dritten Argument true übergeben wird, damit eine eventuell vorhandene Datei gleichen Namens überschrieben wird. Konnte die Datei kopiert werden, liefert CopyFile true zurück, ansonsten false.

>> 383 Wie bereits beim Programm in Listing 255 müssen Sie zum Kompilieren der CopyFile-Methode die Assembly System.Windows.Forms.dll referenzieren und die Namensräume System.Windows. Forms und System.IO importieren. public static bool CopyFile(string sourcefilepath, string destfilepath) // Abfragen, ob die Datei existiert if (System.IO.File.Exists(destFilePath)) // Den Anwender fragen, ob die Datei überschrieben werden soll if (MessageBox.Show("Die Datei '" + destfilepath + "' existiert bereits.\r\n\r\nsoll diese Datei " + "überschrieben werden?", Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.No) // Funktion beenden und false zurückgeben // Datei kopieren System.IO.File.Copy(sourceFilePath, destfilepath, true); return true; catch (Exception ex) // Fehlermeldung ausgeben MessageBox.Show("Die Datei '" + sourcefilepath + "' kann nicht " + "kopiert werden: " + ex.message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); Listing 256: Erweiterte Methode zum Kopieren einer Datei 145 Dateien umbenennen Dateien können Sie sehr einfach über die Move-Methode der File-Klasse aus dem Namensraum System.IO umbenennen. Diese Methode generiert eine Ausnahme vom Typ IOException, wenn das Umbenennen nicht möglich ist. Der folgende Programmcode, der den Import der Namensräume System und System.IO voraussetzt, benennt eine Datei um und fängt mögliche Ausnahmen ab:

384 >> Dateien verschieben string sourcefilename =...; string destfilename =...; // Datei umbenennen File.Move(sourceFileName, destfilename); Console.WriteLine("Datei erfolgreich umbenannt"); catch (IOException ex) Console.WriteLine("Fehler beim Umbenennen der Datei: " + ex.message); Listing 257: Umbenennen einer Datei 146 Dateien verschieben Das Verschieben einer Datei entspricht dem Umbenennen aus Rezept 145, nur dass Sie hier einen anderen Zielordner angeben. Das Programm benötigt den Import der Namensräume System und System.IO. string sourcefilename =...; string destfilename =...; // Datei verschieben File.Move(sourceFileName, destfilename); Console.WriteLine("Datei '0' erfolgreich nach '1' verschoben", sourcefilename, destfilename); catch (IOException ex) Console.WriteLine("Fehler beim Verschieben der Datei '0' nach " + "'1': 2", sourcefilename, destfilename, ex.message); Listing 258: Verschieben einer Datei 147 Dateien löschen Dateien können Sie über die Methode Delete der Klasse System.IO.File dauerhaft löschen. Da beim Löschen Fehler auftreten können, die in einer Ausnahme vom Typ IOException resultieren, sollten Sie diese abfangen. Falls die zu löschende Datei gar nicht existiert, wirft Delete aber keine Ausnahme. Listing 259 zeigt ein Beispiel. Zum Kompilieren müssen Sie die Namensräume System und System.IO importieren.

>> 385 // Der Dateiname string filename =...; // Datei löschen System.IO.File.Delete(fileName); Console.WriteLine("Die Datei '0' wurde erfolgreich gelöscht " + "oder war nicht vorhanden", filename); catch (IOException ex) // Fehler beim Löschen Console.WriteLine("Die Datei '0' konnte nicht gelöscht werden: 1", filename, ex.message); Listing 259: Löschen einer Datei mit Fehlermeldung Hinweis So gelöschte Dateien werden leider nicht in den Papierkorb verschoben, sondern dauerhaft gelöscht. Eine Lösung zum Verschieben von Dateien und Ordnern in den Papierkorb finden Sie im Rezept 158. 148 Dateien vergleichen Für den Vergleich zweier Dateien bietet das.net Framework keinen Support. Wenn Sie zwei Dateien daraufhin vergleichen wollen, ob diese identisch sind, müssen Sie eine eigene Vergleichsmethode programmieren. Sie können natürlich auch einfach die Methode CompareFiles aus Listing 260 verwenden. Diese Methode erwartet neben den Dateinamen der zu vergleichenden Dateien am dritten Argument einen Wert der in Listing 260 deklarierten Aufzählung FileCompareMethod. Über dieses Argument können Sie bestimmen, ob nur das Datum der letzten Änderung (FileCompareMethod.Date) oder nur der Inhalt (FileCompareMethod.Content) oder beides verglichen wird (FileCompareMethod.DateAndContent). CompareFiles überprüft zunächst, ob die Dateinamen identisch sind, und beendet sich mit true, wenn dies der Fall ist. Danach vergleicht CompareFiles über zwei FileInfo-Objekte das Datum der letzten Änderung der Dateien, wenn am Argument comparemethod ein entsprechender Wert übergeben wurde. Ist dieses Datum unterschiedlich, kehrt CompareFiles mit der Rückgabe von false zurück. Das Datum der Erstellung der Datei, das Sie aus einem FileInfo-Objekt ebenfalls auslesen können, wird übrigens nicht verglichen. Der Grund dafür liegt darin, dass Windows (XP, 2000) beim Kopieren einer Datei von einem Ordner in einen anderen dieses Datum auf das aktuelle setzt, was den Vergleich der Erstelldaten untauglich macht. Zum Vergleich des Inhalts öffnet CompareFiles die beiden Dateien über FileStream-Objekte und vergleicht direkt die Größe der Dateien. Ist diese unterschiedlich, sind die Dateien ungleich und die Methode wird mit der Rückgabe von false beendet. Damit ist sichergestellt,

386 >> Dateien vergleichen dass der dem Größenvergleich folgende zeitaufwändige byteweise Vergleich nur dann ausgeführt werden muss, wenn die Dateien dieselbe Größe besitzen. Ist die Größe der Dateien identisch, liest CompareFiles die Streams in einer Schleife byteweise ein und vergleicht jedes Byte mit dem der anderen Datei. Die dazu verwendete Methode Read- Byte gibt einen int-wert zurück, der mit -1 aussagt, dass kein weiteres Byte mehr gelesen werden konnte. Im Schleifenfuß überprüft CompareFiles deswegen die Gleichheit der Werte und ob das aktuell gelesene Byte der ersten Datei -1 ist. Nach dem Schließen der Streams wird dann nur noch überprüft, ob die beiden zuletzt ermittelten int-werte gleich sind, und das Ergebnis dieses Vergleichs zurückgegeben. CompareFiles erfordert die Einbindung der Namensräume System und System.IO. /* Aufzählung für die möglichen Vergleichstypen */ public enum FileCompareMethod Date, Content, DateAndContent /* Vergleich zweier Dateien */ public static bool CompareFiles(string filepath1, string filepath2, FileCompareMethod comparemethod) // Wenn beide Dateinamen identisch sind, true zurückgeben if (filepath1 == filepath2) return true; // Über FileInfo-Objekte das Datum der letzten Änderung vergleichen, // sofern dies gewünscht ist. Das Erstelldatum wird übrigens nicht // verglichen, weil dieses beim Kopieren von Dateien // auf das aktuelle Datum gesetzt wird if (comparemethod == FileCompareMethod.DateAndContent comparemethod == FileCompareMethod.Date) FileInfo fi1 = new FileInfo(filePath1); FileInfo fi2 = new FileInfo(filePath2); if (fi1.lastwritetime!= fi2.lastwritetime) // Den Inhalt vergleichen, sofern dies gewünscht ist if (comparemethod == FileCompareMethod.DateAndContent comparemethod == FileCompareMethod.Content) Listing 260: Methode zum Vergleich von zwei Dateien

>> 387 // FileStream-Objekte für den Vergleich erzeugen FileStream fs1 = new FileStream(filePath1, FileMode.Open); FileStream fs2 = new FileStream(filePath2, FileMode.Open); // Die Dateigröße vergleichen if (fs1.length!= fs2.length) // Die Dateien Byte für Byte vergleichen int filebyte1, filebyte2; do filebyte1 = fs1.readbyte(); filebyte2 = fs2.readbyte(); while (filebyte1 == filebyte2 && filebyte1!= -1); // Die Streams schließen fs1.close(); fs2.close(); // Das Ergebnis zurückgeben: Die Dateien sind gleich, wenn an dieser // Stelle die zuletzt gelesenen Bytes identisch sind return (filebyte1 == filebyte2); return true; Listing 260: Methode zum Vergleich von zwei Dateien (Forts.) 149 Ordner vergleichen Das.NET Framework und das Windows-API bieten keine Möglichkeiten, zwei Ordner miteinander zu vergleichen. Ein solcher Vergleich muss wieder einmal selbst programmiert werden. Und das ist gar nicht so einfach. Die Methode CompareFolders in Listing 261 implementiert den Vergleich zweier Ordner. Am ersten und zweiten Argument übergeben Sie die Ordnernamen, am dritten geben Sie an, ob die Methode den Inhalt der in den Ordnern enthaltenen Dateien vergleichen soll oder nur das Datum der letzten Änderung. CompareFolders geht den am linken Argument angegebenen Ordner rekursiv durch und überprüft für den Ordner und jeden seiner Unterordner: ob die Anzahl der Unterordner im korrespondierenden anderen Ordner identisch ist, ob der korrespondierende andere Ordner dieselben Unterordner besitzt und ob der korrespondierende andere Ordner dieselben Dateien besitzt. Dieser Methode werden je ein DirectoryInfo-Objekt für die aktuell zu vergleichenden Ordner und eine Info darüber übergeben, ob der Inhalt der Dateien im Ordner verglichen werden soll.

388 >> Ordner vergleichen CompareFolder vergleicht zunächst über das FileInfo-Array, das die GetFiles-Methode der jeweiligen DirectoryInfo-Instanz zurückgibt, die Anzahl der Dateien in den beiden Ordnern und gibt false zurück, wenn diese unterschiedlich ist. Danach geht CompareFolder alle Dateien des linken Ordners durch, ermittelt den korrespondierenden Dateinamen im rechten Ordner und überprüft, ob die Datei in diesem vorhanden ist. Wird eine nicht vorhandene Datei ermittelt, wird die Methode mit false beendet. Ist die Datei vorhanden, vergleicht CompareFolder je nach dem Argument comparefilecontent entweder nur das Datum der letzten Änderung oder den Inhalt der Dateien. Zum Vergleich wird die Methode CompareFiles aus dem Rezept 148 eingesetzt. Das von dieser Methode erwartete Argument vom Typ FileCompareMethod wird dabei passend zum Wert des CompareFolder-Arguments eingestellt. Die Anzahl der Unterordner und die Existenz der Unterordner des linken im rechten Ordner werden dann auf eine ähnliche Weise geprüft wie die der Dateien. Innerhalb der Schleife, die die Unterordner durchgeht, ruft CompareFolder sich nach der Überprüfung der Existenz des Unterordners dann für die jeweiligen Unterordner selbst auf, um diese auf Gleichheit zu überprüfen. Dabei wird die Rückgabe des rekursiven Aufrufs ausgewertet und in dem Fall, dass die Methode false zurückgibt (weil die Unterordner nicht identisch sind), return false aufgerufen. Damit ist sichergestellt, dass der rekursive Aufruf möglichst schnell zurückkehrt. Am Ende gibt CompareFolder true zurück, weil an dieser Stelle (nach allen Überprüfungen) bewiesen ist, dass beide Ordner identisch sind. Um diese Methode kompilieren zu können, müssen Sie die Namensräume System und System.IO einbinden. public static bool CompareFolder(DirectoryInfo folder1, DirectoryInfo folder2, bool comparefilecontent) // Die Anzahl der Dateien im Ordner vergleichen FileInfo[] files1 = folder1.getfiles(); FileInfo[] files2 = folder2.getfiles(); if (files1.length!= files2.length) // Die Dateien durchgehen und diese vergleichen foreach (FileInfo file1 in files1) // Dateiname im zweiten Ordner ermitteln und überprüfen, ob die Datei // existiert string filename2 = Path.Combine(folder2.FullName, file1.name); if (System.IO.File.Exists(fileName2)) // Dateien vergleichen FileCompareMethod comparemethod = comparefilecontent? FileCompareMethod.Content : FileCompareMethod.Date; Listing 261: Methode zum Vergleichen zweier Ordner

>> 389 if (CompareFiles(file1.FullName, filename2, comparemethod) == false) else // Datei existiert nicht, also sind die Ordner nicht identisch // Die Anzahl der Unterordner vergleichen DirectoryInfo[] subfolders1 = folder1.getdirectories(); DirectoryInfo[] subfolders2 = folder2.getdirectories(); if (subfolders1.length!= subfolders2.length) // Die Unterordner des ersten Ordners durchgehen, um zu vergleichen, ob der // zweite Ordner dieselben Unterordner besitzt, und um diese rekursiv // durchzugehen foreach (DirectoryInfo subfolder1 in subfolders1) // Ordnername des zweiten Ordners ermitteln und überprüfen, ob der // Ordner existiert string folderpath2 = Path.Combine(folder2.FullName, subfolder1.name); DirectoryInfo subfolder2 = new DirectoryInfo(folderPath2); if (subfolder2.exists == false) // Rekursiver Aufruf zum Vergleich der beiden Unterordner if (CompareFolder(subFolder1, subfolder2, comparefilecontent) == false) // Wenn die Methode hier ankommt, enthalten beide (Unter-)Ordner einen // identischen Inhalt return true; Listing 261: Methode zum Vergleichen zweier Ordner (Forts.)

390 >> Die Größe einer Datei ermitteln Zum vereinfachten Aufruf habe ich noch eine zweite Variante der CompareFolders-Methode entwickelt, der jeweils ein String übergeben wird, der den Pfad zum Ordner darstellt. Diese Variante ruft einfach die erste Variante mit zwei erzeugten DirectoryInfo-Objekten auf. public static bool CompareFolders(string folderpath1, string folderpath2, bool comparefilecontent) // Die übergebenen Ordnernamen angleichen if (folderpath1.endswith("\\") == false) folderpath1 += "\\"; if (folderpath2.endswith("\\") == false) folderpath2 += "\\"; // Die rekursive Vergleichsmethode mit zwei neuen DirectoryInfo- // Objekten für die beiden Ordner aufrufen DirectoryInfo folder1 = new DirectoryInfo(folderPath1); DirectoryInfo folder2 = new DirectoryInfo(folderPath2); return CompareFolder(folder1, folder2, comparefilecontent); Listing 262: Zweite Variante der Methode zum Vergleichen zweier Ordner 150 Die Größe einer Datei ermitteln Zur Ermittlung der Größe einer Datei können Sie ein FileInfo-Objekt verwenden und dessen Length-Eigenschaft auslesen. Das folgende Beispiel setzt ein solches Objekt ein und integriert eine Ausnahmebehandlung für den Fall, dass die Datei nicht existiert oder dass die Größeninformation nicht gelesen werden kann. Das Beispiel erfordert den Import der Namensräume System und System.IO. string filename = "c:\\pagefile.sys"; // Ermitteln der Größe der Datei // Größe über ein FileInfo-Objekt auslesen FileInfo fi = new FileInfo(fileName); long filesize = fi.length; Console.WriteLine("0: 1:#,#0 Byte.", filename, filesize); catch (IOException ex) Console.WriteLine("Fehler beim Ermitteln der Dateigröße " + "der Datei '0': 1.", filename, ex.message); Listing 263: Ermitteln der Größe einer Datei

>> 391 151 Dateiattribute auslesen Wie Sie ja sicherlich wissen, können Dateien im Windows- mit Attributen ausgestattet sein. Das Attribut ReadOnly bestimmt zum Beispiel, dass die Datei schreibgeschützt ist. Diese Attribute können Sie über die Eigenschaft Attributes eines FileInfo-Objekts (aus dem Namensraum System.IO) auslesen (und bearbeiten, wie ich in Rezept 152 zeige). Attributes ist ein Bitfeld, das aus den Konstanten der Aufzählung FileAttributes zusammengesetzt sein kann. Zur Überprüfung, ob bestimmte Attribute gesetzt sind, rufen Sie die HasFlag-Methode auf, der Sie das Attribut übergeben. Gibt diese Methode true zurück, ist das Attribut gesetzt. Listing 264, das den Import der Namensräume System und System.IO voraussetzt, zeigt diesen Vergleich am Beispiel der Datei c:\pagefile.sys für alle möglichen Dateiattribute (das Attribut Directory, das nur für Verzeichnisse gilt, wird hier nicht verwendet). string filename = "c:\\pagefile.sys"; // Ermitteln der Attribute der Datei // FileInfo-Objekt erzeugen FileInfo fi = new FileInfo(fileName); // Attribute auslesen Console.WriteLine("Dateiattribute von 0", filename); if (fi.attributes.hasflag(fileattributes.archive)) Console.WriteLine("Archiv"); if (fi.attributes.hasflag(fileattributes.compressed)) Console.WriteLine("Komprimiert"); if (fi.attributes.hasflag(fileattributes.device)) Console.WriteLine("Gerät (Dieses Attribut ist für eine zukünftige " + "Verwendung reserviert)"); if (fi.attributes.hasflag(fileattributes.encrypted)) Console.WriteLine("Verschlüsselt"); if (fi.attributes.hasflag(fileattributes.hidden)) Console.WriteLine("Versteckt"); Listing 264: Auslesen der Attribute einer Datei

Copyright Daten, Texte, Design und Grafiken dieses ebooks, sowie die eventuell angebotenen ebook-zusatzdaten sind urheberrechtlich geschützt. Dieses ebook stellen wir lediglich als persönliche Einzelplatz-Lizenz zur Verfügung! Jede andere Verwendung dieses ebooks oder zugehöriger Materialien und Informationen, einschliesslich der Reproduktion, der Weitergabe, des Weitervertriebs, der Platzierung im Internet, in Intranets, in Extranets, der Veränderung, des Weiterverkaufs und der Veröffentlichung bedarf der schriftlichen Genehmigung des Verlags. Insbesondere ist die Entfernung oder Änderung des vom Verlag vergebenen Passwortschutzes ausdrücklich untersagt! Bei Fragen zu diesem Thema wenden Sie sich bitte an: info@pearson.de Zusatzdaten Möglicherweise liegt dem gedruckten Buch eine CD-ROM mit Zusatzdaten bei. Die Zurverfügungstellung dieser Daten auf unseren Websites ist eine freiwillige Leistung des Verlags. Der Rechtsweg ist ausgeschlossen. Hinweis Dieses und viele weitere ebooks können Sie rund um die Uhr und legal auf unserer Website http://www.informit.de herunterladen