Sie sind hier:
Wissen
Telefon (Mo-Fr 9 bis 16 Uhr):
0201/649590-0
|
Kontaktformular
MENU
Medien
Übersicht
Lexikon/Glossar
Spickzettel
Weblog
Konferenzvorträge
Fachbücher
Fachartikel
Leserportal
Autoren gesucht!
Literaturtipps
Praxisnahe Fallbeispiele
Downloads
Newsletter
.NET
Startseite
.NET 8.0
.NET 7.0
.NET 6.0
.NET 5.0
.NET Core
.NET 4.0/4.5.x/4.6.x
.NET 3.0/3.5
.NET 2.0
.NET-Lexikon
Programmiersprachen
Entwicklerwerkzeuge
Klassenreferenz
Softwarekomponenten
Windows Runtime
World Wide Wings-Demo
Versionsgeschichte
Codebeispiele
ASP.NET
Artikel
Bücher
Schulung & Beratung
Konferenzen/Events
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
Forum
Schulung & Beratung
PowerShell
Startseite
Commandlet-Referenz
Codebeispiele
Commandlet Extensions
Versionsgeschichte
Schulungen+Beratung
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Scripting
Startseite
Lexikon
FAQ
Bücher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
.NET-Scripting
Forum
Schulung & Beratung
Nutzer
Anmeldung/Login
Buchleser-Registrierung
Gast-Registrierung
Hilfe
Website-FAQ
Technischer Support
Site Map
Tag Cloud
Suche
Kontakt
Erklärung des Begriffs: Dateisystem
Zur Stichwortliste unseres Lexikons
Was ist
Dateisystem
?
Für die Arbeit mit dem Dateisystem stellt das
.NET Framework
Klassen im Namensraum
System.IO
bereit. Bei
WinRT
gibt es eigenen Klassen in Windows.
Storage
.FileIO.
Programmierung mit
System.IO
Im Mittelpunkt der Programmierung des Dateisystems stehen die Klassen DriveInfo (Laufwerk), Direc¬toryInfo (Verzeichnis) und FileInfo (Datei). Die entsprechenden
Objektmenge
n werden in Arrays des jeweiligen
Objekttyp
s verwaltet; eigene Mengenklassen existieren im Gegensatz zu vielen anderen Anwendungsbereichen in der
FCL
nicht. Die Klasse DriveInfo ist neu seit
.NET 2.0
.
Neben DirectoryInfo und FileInfo bietet die
FCL
alternativ für den Zugriff auf Verzeichnisse und Dateien auch die Klassen File und Directory an. Letztgenannte besitzen nur statische Mitglieder mit Dateisystemoperationen wie Copy(), Delete(), Move(), Open() und GetCreationTime(). Grundsätzlich bieten die beiden Klassenpaare äquivalente Funktionen in unterschiedlichen Darreichungsformen an. Für viele Anwendungen interessant ist Directory.GetCurrentDirectory(): Diese
Methode
liefert das aktuelle Arbeitsverzeichnis einer Anwendung.
Beispiel 1:
Liste
der Laufwerke
Das erste Beispiel zeigt, wie Sie alle Laufwerke in Ihrem
Computersystem
mit den zugehörigen Wurzel-verzeichnissen auflisten können.
public void Laufwerke_Auflisten()
{
foreach (DriveInfo di in DriveInfo.GetDrives())
{
Demo.Print("Laufwerk: " + di.Name);
if (di.IsReady)
{
Demo.Print(" Bezeichnung: " + di.Volume
Label
);
Demo.Print(" Typ: " + di.DriveType);
Demo.Print(" Format: " + di.DriveFormat);
Demo.Print(" Größe: " + di.TotalSize);
Demo.Print(" Freier Platz: " + di.TotalFreeSpace);
Demo.Print(" Wurzelordner: " + di.RootDirectory.FullName);
}
else
{
Demo.Print(" ist nicht bereit!");
}
}
Listing 1:
Liste
der Laufwerke ausgeben [
System.IO
.Demo.cs]
Beispiel 2:
Liste
der Dateien in einem Verzeichnis
Das zweite Listing nimmt Zugriff auf das Verzeichnis /_Daten/Dateisystem unterhalb des aktuellen Ar-beitsverzeichnisses. Zunächst gibt die Routine Informationen über das Verzeichnis aus, dann listet sie alle in dem Verzeichnis enthaltenen Textdateien auf, indem sie GetFiles() mit dem Muster *.txt aufruft.
public void Datei_
Liste
() {
//
Liste
der Dateien in einem bestimmten Ordner
string verzeichnis = Directory.GetCurrentDirectory() + @"\_daten\dateisystem\";
// Zugriff auf ein Dateiverzeichnis
DirectoryInfo d = new DirectoryInfo(verzeichnis);
// Prüfung auf Existenz des Verzeichnisses
if ( !d.Exists ) {
Demo.Print("Verzeichnis nicht vorhanden!");
return;
}
// Ausgabe von Informationen über den Ordner
Demo.Print("Erzeugt am: " + d.CreationTime);
Demo.Print("Zuletzt gelesen am : " + d.LastAccessTime);
Demo.Print("Zuletzt geändert am : " + d.LastWriteTime);
Demo.Print("Wurzelordner: " + d.Root.Name);
Demo.Print("Name des übergeordneten Ordners: " + d.Parent.Name);
Demo.Print("Pfad des übergeordneten Ordners: " + d.Parent.FullName);
//
Liste
aller Textdateien in diesem Verzeichnis
Demo.Print("Alle Textdateien in Ordner: " + d.FullName);
foreach (FileInfo f in d.GetFiles("*.txt"))
Demo.Print(f.Name + ";" + f.Length + ";" + f.CreationTime);
}
Listing 2:
Liste
der Dateien in einem Verzeichnis ausgeben [
System.IO
.Demo.cs]
HINWEIS: Leider fehlt in .NET nach wie vor sowohl in der Directory- als auch in der DirectoryInfo-Klasse eine
Methode
zum Kopieren eines ganzen Verzeichnisses.
Die neue Möglichkeit EnumerateFiles() erlaubt mit
LINQ
(ein kleiner Vorgriff auf Kapitel 10!) einfache Abfragen, welche sich auf Dateien sowie Dateiinhalte beziehen. Die
LINQ
-Abfrage in Listing 3 ermittelt mit diesen
Methode
n beispielsweise jene Zeilen aus sämtlichen
CSV
-Dateien des aktuellen Ordners, bei welchen sich in der ersten Spalte der Wert 1 wiederfindet. Das Ergebnis dieser Abfrage – ein Ienumerable<string> – wird anschließend an die zuvor erwähnte
Methode
WriteAllLines() übergeben, um die gefundenen Zeilen in der Datei result.txt zu hinterlegen.
DirectoryInfo dir = new DirectoryInfo("d:\datenordner");
var info =
from file in Directory.EnumerateFiles(".", "*.csv")
from line in File.ReadLines(file)
where line.Split(‘;’)[0] == "1"
select file + ": " + line;
File.WriteAllLines("result.txt", info);
Listing 3:
LINQ
-Abfrage über sämtliche
CSV
-Dateien eines Ordners
Dateiinhalte
Ähnlich wie
Java
arbeitet .NET mit
Stream
s, um Inhalte von Dateien zu lesen und zu ändern. Ein
Stream
ist ganz allgemein eine Abfolge von Bytes. Eine Instanz der Klasse File
Stream
repräsentiert den Inhalt einer Text- oder Binärdatei. Andere
Stream
-Typen existieren z. B. für den Datenversand über ein
Netzwerk
(
System.Net.Sockets
.Network
Stream
), für eine Byte-Folge im Hauptspeicher (
System.IO
.Memory
Stream
), eine verschlüsselte Byte-Folge (
System.Security
.Crypto¬graphy.Crypto
Stream
) oder eine komprimierte Byte-Folge (
System.IO
.Compression.GZip
Stream
). Basisklasse für alle
Stream
-Klassen ist
System.IO
.
Stream
.
System.IO
.
Stream
definiert für jeden
Stream
einfache Operationen wie CanRead, CanWrite, Read(), Write() und Close(). Komfortablere Zugriffsmöglichkeiten (beispielsweise Peek(), ReadLine(), ReadToEnd(), WriteLine()) existieren in Form so genannter Reader- und Writer-Klassen.
Stream
Reader und
Stream
Writer für
Stream
s mit
ASCII
-Zeichen
BinaryReader und BinaryWriter für
Stream
s mit beliebigen Byte-Folgen
Beispiel 1: Textdatei schreiben
Das erste Beispiel zeigt das Schreiben einer Protokolldatei mithilfe der Klassen File
Stream
und
Stream
Writer. Bei einer Binärdatei würden Sie analog die Klasse BinaryWriter verwenden.
// Schreiben einer Protokolldatei
public void Textdatei_Schreiben()
{
// Festlegung der Datei
string dateiName = @".\_daten\dateisystem\protokolldatei.txt";
// Datei öffnen
File
Stream
fs = new File
Stream
(dateiName, FileMode.OpenOrCreate, FileAccess.Write);
//
Stream
öffnen
Stream
Writer w = new
Stream
Writer(fs);
// Anfügen am Ende
w.Base
Stream
.Seek(0, SeekOrigin.End);
// Zeilen schreiben
w.WriteLine("Start des Programms: " + DateTime.Now.ToString());
// Zeichen schreiben ohne Umbruch
w.Write("Datenblock: ");
for (int I = 0; I < 26; i++)
w.Write((char)(97 + i));
// Zeilen schreiben
w.WriteLine();
w.WriteLine("Ende des Programms: " + DateTime.Now.ToString());
// Writer und
Stream
schließen
w.Close();
fs.Close();
}
Listing 4: Schreiben einer Textdatei [
System.IO
.Demo.cs]
Beispiel 2: Textdatei lesen
Das zweite Beispiel zeigt das zeilenweise Lesen einer Protokolldatei mithilfe der Klassen File¬
Stream
und
Stream
Reader. Bei einer Binärdatei würden Sie analog die Klasse BinaryReader verwenden.
// Lesen aus einer Protokolldatei
public void Textdatei_Lesen()
{
// Festlegung der Datei
string dateiName = @".\_daten\dateisystem\protokolldatei.txt";
// Datei öffnen
File
Stream
fs = new File
Stream
(dateiName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
//
Stream
öffnen
Stream
Reader r = new
Stream
Reader(fs);
// Zeiger auf den Anfang
r.Base
Stream
.Seek(0, SeekOrigin.Begin);
// Alle Zeilen lesen und zeilenweise ausgeben
while (r.Peek() > -1)
Demo.Print(r.ReadLine());
// Reader und
Stream
schließen
r.Close();
fs.Close();
}
Listing 5: Auslesen einer Textdatei [
System.IO
.Demo.cs]
Übertragen von Daten zwischen
Stream
s
Jeder, der schon einmal mit
Stream
s gearbeitet hat, kennt Routinen, welche blockweise aus einem
Stream
lesen und diese Blöcke in einen anderen
Stream
schreiben. Für solche Fälle besitzt die Klasse
Stream
ab
.NET 4.0
eine
Methode
CopyTo(), welche den
Stream
, an welchen die Daten gesendet werden sollen, entgegennimmt. Eine Überladung dieser
Methode
nimmt zusätzlich eine Blockgröße in Byte entgegen. Diese gibt an, wie groß die zu übertragenden Blöcke sein sollen. Der Standardwert wurde hierfür auf 4096 festgelegt. Listing 9.17 zeigt ein Beispiel für den Einsatz dieser
Methode
. Dieses kopiert die aus dem
Stream
input gelesenen Daten in den
Stream
output.
public static void Copy
Stream
Sample()
{
File
Stream
input;
File
Stream
output;
using (input = new File
Stream
(@”c:\temp\a.txt”, FileMode.Open))
{
using (output = new File
Stream
(@”c:\temp\b.txt”, FileMode.CreateNew))
{
input.CopyTo(output);
}
}
}
Listing 6: Daten zwischen
Stream
s übertragen
Querverweise zu anderen Begriffen im Lexikon
System.Net.Sockets
System.Security
.NET Framework
Computersystem
Objektmenge
System.IO
Objekttyp
.NET 4.0
Netzwerk
Methode
Storage
Stream
Liste
Label
Java
.NET Framework 2005 (.NET 2.0)
Windows Runtime (WinRT)
American Standard Code for Information Interchange (ASCII)
Language Integrated Query (LINQ)
Comma Separated Value (CSV)
Framework Class Library (FCL)
Beratung & Support
Anfrage für Beratung/Consulting zu Dateisystem
Gesamter Beratungsthemenkatalog
Technischer Support zum Dateisystem
Schulungen zu diesem Thema
Dateisystemzugriff mit .NET (System.IO)
Scripting des Dateisystems
Microsoft SQL Server 2008 - Die Neuerungen gegenüber SQL Server 2005 (Update-Schulung)
Windows Scripting
Linux-Server-Administration
Visual Basic .NET für Umsteiger von VBA/VB 4/5/6
Linux-Grundlagen
Windows Server 2025 Update (Neuheiten für Administratoren gegenüber Windows Server 2012)
.NET und C# für Umsteiger von klassischem Visual Basic/COM
Plattformneutrale Hybrid-Anwendungen mit HTML5 und JavaScript (oder TypeScript) mit Electron (Hosted/Hybrid Web Apps)
Visual Basic Script (VBScript/VBS) - Sprachsyntax und Praxiseinsatz
Android-App-Entwicklung mit Java (Android-Programmierung mit Java)
Windows Script Host (WSH)
.NET-Basisklassenbibliothek (.NET Base Class Library)
Windows 10/Windows 11 für Administratoren
Apps für iOS (iPhone und iPad) entwickeln mit XCode und Objective-C
Windows PowerShell 5.0/5.1 für Umsteiger von Version 4.0
.NET Multi-Platform App UI (MAUI)
Cordova - Plattformübergreifende mobile Anwendungen für Android, Apple iOS, RIM Blackberry, Windows Phone, Windows 8/10, u.a.
.NET und C# für Umsteiger von Java
Windows 8/Windows 8.1 für Anwender/Benutzer (Umstieg von Windows XP auf Windows 8)
Windows 8/Windows 8.1 für Administratoren
Versionsverwaltung mit Git (optional mit GitHub, GitLab, Gitea, Bitbucket, Azure DevOps oder AWS CodeCommit)
Windows Installer (MSI), Windows Installer-XML (WiX) und MSIX - Erstellen von Installationspaketen / Verteilen von Windows-Anwendungen / Deployment
Windows PowerShell 5.1/PowerShell 7.0 für System- und Netzwerkadministratoren
Windows Server 2012 oder Windows Server 2012 R2 für Administratoren (Neuheiten gegenüber Windows Server 2008 R2)
ASP.NET Model View Controller (ASP.NET MVC) und ASP.NET WebAPI für ASP.NET MVC 5.x oder ASP.NET MVC Core 6.0/7.0/8.0
ASP.NET Core 8.0/9.0: komplettes Wissen - mit MVC, Razor Pages, Blazor, WebAPIs und gRPC
Neuerungen in Microsoft SharePoint 2016 - für Umsteiger von Version 2013
Systemmanagement mit .NET und WMI/CIM
Anfrage für eine individuelle Schulung zum Thema Dateisystem
Gesamter Schulungsthemenkatalog
Bücher zu diesem Thema
Blazor 9.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 9.0, C# 13.0 und Visual Studio 2022
C# 13.0 Crashkurs
Moderne Datenzugriffslösungen mit Entity Framework Core 9.0
.NET 9.0 Update: Die Neuerungen in .NET 9.0 gegenüber .NET 8.0
PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
.NET 8.0 Update: Die Neuerungen in .NET 8.0 gegenüber .NET 7.0
Blazor 8.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 8.0, C# 12.0 und Visual Studio 2022
Moderne Datenzugriffslösungen mit Entity Framework Core 8.0
C# 12.0 Crashkurs
Cross-Plattform-Apps mit .NET MAUI entwickeln
Blazor 7.0: Blazor WebAssembly, Blazor Server und Blazor Hybrid
C# 11.0 Crashkurs
Moderne Datenzugriffslösungen mit Entity Framework Core 7.0
PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
App Engineering: SwiftUI, Jetpack Compose, .NET MAUI und Flutter
Vue.js 3 Crashkurs
Moderne Datenzugriffslösungen mit Entity Framework Core 6.0
Blazor 6.0: Blazor WebAssembly, Blazor Server und Blazor Desktop
C# 10.0 Crashkurs
Cross-Plattform-Apps mit Xamarin.Forms entwickeln
Developing Web Components with TypeScript: Native Web Development Using Thin Libraries
PowerShell – kurz & gut
C# 9.0 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET 5.0, .NET Core und Xamarin
ASP.NET Core Blazor 5.0: Blazor WebAssembly und Blazor Server - Moderne Single-Page-Web-Applications
Windows PowerShell 5 und PowerShell 7: Das Praxisbuch
Moderne Datenzugriffslösungen mit Entity Framework Core 5.0
ASP.NET Core Blazor 3.1/3.2: Blazor Server und Blazor Webassembly - Moderne Single-Page-Web-Applications mit .NET, C# und Visual Studio
ASP.NET Core Blazor 3.0/3.1: Blazor Server und Blazor Webassembly - Moderne Single-Page-Web-Applications mit .NET, C# und Visual Studio
Moderne Datenzugriffslösungen mit Entity Framework Core 3.1
C# 8.0 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
Moderne Datenzugriffslösungen mit Entity Framework Core 3.0
Windows PowerShell 5.1 und PowerShell Core 6.1 - Das Praxishandbuch
Moderne Datenzugriffslösungen mit Entity Framework Core 2.1/2.2
Moderne Webanwendungen für .NET-Entwickler: Server-Anwendungen, Web APIs, SPAs & HTML-Cross-Platform-Anwendungen mit ASP.NET, ASP.NET Core, JavaScript
C# 7.3 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
Modern Data Access with Entity Framework Core: Database Programming Using .NET, .NET Core, UWP, and Xamarin with C#
Windows PowerShell und PowerShell Core - Der schnelle Einstieg: Skriptbasierte Systemadministration für Windows, Linux und macOS
Programmierung in Python
C# 7.2 Crashkurs: Die Syntax der Programmiersprache C# für die Softwareentwicklung in .NET Framework, .NET Core und Xamarin
Moderne Datenzugriffslösungen mit Entity Framework Core 2.0/2.1
Effizienter Datenzugriff mit Entity Framework Core: Datenbankprogrammierung mit C# für .NET Framework, .NET Core und Xamarin
Moderne Datenzugriffslösungen mit Entity Framework Core 2.0
Windows PowerShell 5 und PowerShell Core 6 - Das Praxishandbuch
Angular - Das Praxisbuch zu Grundlagen und Best Practices
Moderne Datenzugriffslösungen mit Entity Framework Core 1.0, 1,1 und 2.0
Moderne Datenzugriffslösungen mit Entity Framework Core 1.0, 1,1 und 2.0
Moderne Datenzugriffslösungen mit Entity Framework Core 1.1 und 2.0-Preview2
Moderne Datenzugriffslösungen mit Entity Framework Core 1.x und 2.0
Moderne Datenzugriffslösungen mit Entity Framework Core 1.x und 2.0
Introducing Regular Expressions: JavaScript and TypeScript
Introducing Web Development
Introducing Bootstrap 4
Programming Web Applications with Node, Express and Pug
Einführung in TypeScript: Grundlagen der Sprache TypeScript 2
Pug – Die Template-Engine für node.js
Web-Programmierung mit Node, Express und Pug
Windows PowerShell 5 – kurz & gut
Moderne Datenzugriffslösungen mit Entity Framework Core 1.1
Windows PowerShell 5.0 - Das Praxishandbuch
PHP 7 und MySQL: Von den Grundlagen bis zur professionellen Programmierung
Windows Scripting Lernen
.NET Praxis - Tipps und Tricks für .NET und Visual Studio
Grundlagen für Web-Entwickler: Protokolle, HTML und CSS
Bootstrap 3 - Stile und Komponenten
Bootstrap 4 - Stile und Komponenten
Einführung in JavaScript: ECMAScript 5
Einführung in node.js
express – Middleware für node.js
JADE – Die Template Engine für node.js
Reguläre Ausdrücke in JavaScript
Moderne Datenzugriffslösungen mit Entity Framework 6
C++ Standardbibliothek
AngularJS: Moderne Webanwendungen und Single Page Applications mit JavaScript
Microsoft SharePoint Server 2013 und SharePoint Foundation: Das umfassende Handbuch
SQL Server 2014 für Professionals: Hochverfügbarkeit, Cloud-Szenarien, Backup/Restore, Monitoring & Performance
Moderne Webanwendungen mit ASP.NET MVC und JavaScript
Windows PowerShell 4.0 - Das Praxishandbuch
JavaScript: Das umfassende Handbuch, inkl. HTML5, JavaScript-Frameworks, jQuery, OOP
C++11 für Programmierer
C++ kurz und gut
Microsoft ASP.NET 4.5 - Entwicklerbuch
Moderne Webanwendungen mit ASP.NET MVC
Verteilte Systeme und Services mit .NET 4.5
Scripting mit Windows PowerShell 3.0 - Der Workshop: Skript-Programmierung mit Windows PowerShell 3.0 vom Einsteiger bis zum Profi
Windows 8 für Administratoren
Windows 8.1 - Das Handbuch (27. November 2013)
Windows Store Apps entwickeln mit C# und XAML - Crashkurs
.NET 4.5 Update
Windows Scripting Lernen
WPF 4.5 und XAML
Datenbankprogrammierung mit .NET 4.5
C++11: Der Leitfaden für Programmierer zum neuen Standard
Verteilte Systeme und Services mit .NET 4.0
Microsoft ASP.NET 4.0 mit C# 2010 - Entwicklerbuch
Agile Software Engineering with Visual Studio
Datenbankprogrammierung mit .NET 4.0. Mit Visual Studio 2010 und SQL Server 2008 R2
Microsoft SharePoint Server 2010 und SharePoint Foundation 2010
Microsoft SQL Server 2008 R2 - Das Entwicklerbuch
Microsoft Viusal C# 2010
Office 2010 Programmierung mit VSTO und .NET 4.0: Word, Excel und Outlook erweitern und anpassen
Programmieren mit dem ADO.NET Entity Framework
.NET 4.0 Crashkurs
Visual Basic 2010: Grundlagen, ADO.NET, Windows Presentation Foundation
.NET 4.0 Update
Windows PowerShell 2.0 - Das Praxishandbuch
Windows 7 im Unternehmen
Agile Muster und Methoden
Ajax
ASP.NET 4.0
ASP.NET 4.0 mit Visual C# 2010
JavaScript
PHP 5-Migration
Scripting mit Windows PowerShell 2.0 - Der Einsteiger-Workshop
SQL Server 2008 R2: Das Programmierhandbuch. Inkl. ADO.NET 3.5, LINQ to Entities und LINQ to SQL
Visual Basic 2010
Windows PowerShell 2.0 - Crashkurs
Windows Server 2008 R2
Windows Scripting
Windows Scripting Lernen
Data Mining mit Microsoft SQL Server
Windows 7 für Administratoren
Microsoft ASP.NET 3.5 mit Visual Basic 2008 - Entwicklerbuch
.NET 3.5
Essential PowerShell
.NET 3.5 Crashkurs
Webanwendungen mit ASP.NET 3.5 und AJAX Crashkurs
Alle unsere aktuellen Fachbücher
E-Book-Abo für ab 99 Euro im Jahr