Code-Beispiel
Ein Beispiel zum Einsatz der Klasse System.IO.DirectoryInfo aus der .NET-Klassenbibliothek.
Autor: Dr. Holger Schwichtenberg
Beschreibung
Bei der Instanziierung der Klasse DirectoryInfo muss das zu kapselnde Verzeichnis als Zeichenkette an den Konstruktor übergeben werden. Ein parameterloser Konstruktor ist nicht definiert.
Die Instanziierung ist auch dann erfolgreich, wenn das Verzeichnis gar nicht existiert. Mit dem Attribut Exists kann geprüft werden, ob das Verzeichnis auch wirklich vorhanden ist. Es folgt die Ausgabe von Informationen über den Ordner.
GetFiles() liefert eine Menge der in dem Ordner enthaltenen Dateien, wobei mit Hilfe eines DOS-Platzhalters (* und ?) eine Einschränkung der Dateimenge möglich ist. Ergebnis dieser Methode ist ein Array von Objekten des Typs FileInfo. Über dieses Array kann genauso wie über eine Objektmenge mit For Each iteriert werden.
Beispiel
Das folgende Beispiel gibt Informationen über einen Dateiordner aus und listet alle in dem Ordner enthaltenen Dateien mit der Dateiextension .txt auf.
Programmcodebeispiele Visual Basic .NET (VB.NET)
' ==============================================
' .NET-Code-Beispiel in Visual Basic .NET
' Liste der Dateien in einem bestimmten Ordner
' (C) Holger@Schwichtenberg.de
' ==============================================
Sub Datei_Liste()
Const VERZEICHNIS = "d:\data\dateisystem\"
' --- Zugriff auf ein Dateiverzeichnis
Dim d As DirectoryInfo
d = New DirectoryInfo(VERZEICHNIS)
' --- Prüfung auf Existenz
If Not d.Exists Then
out("Verzeichnis nicht vorhanden!")
Exit Sub
End If
' --- Ausgabe von Informationen über den Ordner
out("Erzeugt am: " & d.CreationTime)
out("Zuletzt gelesen am : " & d.LastAccessTime)
out("Zuletzt geändert am : " & d.LastWriteTime)
out("Wurzelordner: " & d.Root.Name)
out("Name des übergeordneten Ordners: " & _
d.Parent.Name)
out("Pfad des übergeordneten Ordners: " & _
d.Parent.FullName)
' --- Liste bestimmter Dateien
Dim f As FileInfo
out("Alle Text-Dateien in Ordner: " & _
d.FullName)
For Each f In d.GetFiles("*.txt")
out(f.Name & ";" & f.Length() & ";" & _
f.CreationTime())
Next
End Sub
Programmcodebeispiele CSharp (C#)
using System;
using System.IO;
using System.Windows.Forms;
namespace FCLBuch._SystemIO {
public class Samples_Dateisystem {
public void Datei_Liste() {
// Liste der Dateien in einem bestimmten Ordner
string verzeichnis = @"..\_daten\dateisystem\";
// Zugriff auf ein Dateiverzeichnis
DirectoryInfo d = new DirectoryInfo(verzeichnis);
// Prüfung auf Existenz
if ( !d.Exists ) {
FclOutput.PrintOut("Verzeichnis nicht vorhanden!");
return;
}
// Ausgabe von Informationen über den Ordner
FclOutput.PrintOut("Erzeugt am: " + d.CreationTime);
FclOutput.PrintOut("Zuletzt gelesen am : " + d.LastAccessTime);
FclOutput.PrintOut("Zuletzt geändert am : " + d.LastWriteTime);
FclOutput.PrintOut("Wurzelordner: " + d.Root.Name);
FclOutput.PrintOut("Name des übbergeordneten Ordners: " + d.Parent.Name);
FclOutput.PrintOut("Pfad des übbergeordneten Ordners: " + d.Parent.FullName);
// Liste bestimmter Dateien
FclOutput.PrintOut("Alle Text-Dateien in Ordner: " + d.FullName);
foreach (FileInfo f in d.GetFiles("*.txt"))
FclOutput.PrintOut(f.Name + ";" + f.Length + ";" + f.CreationTime);
}
}
}
Hinweise
Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und
PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung
von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B.
Console.WriteLine() einsetzen.
Querverweise
Liste aller Codebeispiele
Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.IO.DirectoryInfo'
Übersicht über den FCL-Namensraum 'System.IO'
.NET & Visual Studio Community Portal