DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Tobi Ulm Artikel Drucken
        
Das Dateisystem aus Sicht von .net

Dieser Artikel richtet sich hauptsächlich an Einsteiger in das .net Framework. Immer wieder tauchen Fragen zum Thema Dateien erstellen, lesen, kopieren oder Verschieben auf.
Nun sind wir in einem Objektorientierten System, und wie schon die alten Römer sagten: "Viele Wege führen nach Rom.", gilt diese Aussage nun auch für das Erstellen und Lesen von Dateien.
Generell befindet sich der Einstiegspunkt für das Dateisystem im Namespace System.IO
Hier sind verschiedene Klassen und Unternamensräume enthalten die die Arbeit mit dem Dateisystem vereinfachen. In diesem Namespace befinden sich aber nicht nur Klassen für den Zugriff auf das Dateisystem sondern auch ganz wesentliche Klassen für die Arbeit für Datenstreams. Die Wesentlichste Klasse ist hier die Klasse Stream welche die Basisklasse für z.B den StreamWriter, StreamReader oder aber auch dem Memorystream (z.B. für Krypthographie) bildet.

Erzeugen Sie eine ASP.NET Anwendung und fügen Sie einer ASP.NET Seite folgende Buttons hinzu:
[Schreiben mit StreamWriter]
[Lesen mit StreamReader]
[Text mit UTF Format speichern / File.Create]
[Text mit UTF Format lesen / FileStream]
[Lesen mit StreamReader / File.OpenText]
[FileStream /File.OpenRead]
[StreamWriter/  File.CreateText]

Fügen Sie ausserdem noch eine TextBox hinzu.

 

Dateien mit dem StreamReader, StreamWriter

Schreiben (Button [Schreiben mit StreamWriter] ):
Dim meinStream As Stream
Dim deinstreamSchreiben As StreamWriter
deinstreamSchreiben = New StreamWriter("C:\data\words.txt")
deinstreamSchreiben.WriteLine("##############################################################")
deinstreamSchreiben.WriteLine("Datei wurde am " & DateTime.Now.ToString() & " geschrieben.")
deinstreamSchreiben.WriteLine("")
deinstreamSchreiben.Write(Me.TextBox1.Text)
deinstreamSchreiben.Close()
deinstreamSchreiben = Nothing

Lesen (Button [Lesen mit StreamReader]):
Me.TextBox1.Text = String.Empty
Dim deinstreamLesen As StreamReader
deinstreamLesen = New StreamReader("C:\data\words.txt")
Me.TextBox1.Text = deinstreamLesen.ReadToEnd()
deinstreamLesen.Close()
deinstreamLesen = Nothing

Dateien mit System.File

Lesen:
BSP1 (Button [Lesen mit StreamReader / File.OpenText])
Dim deinstreamLesen As StreamReader
deinstreamLesen = File.OpenText("C:\data\wordsUTF.txt")
Me.TextBox1.Text = String.Empty
Me.TextBox1.Text = deinstreamLesen.ReadToEnd()
deinstreamLesen.Close()
deinstreamLesen = Nothing

BSP2 (Button [FileStream /File.OpenRead])
Dim deinFileLesen As FileStream
deinFileLesen = File.OpenRead("C:\data\wordsUTF.txt")
Dim b(1024) As Byte
Dim temp As System.Text.UTF8Encoding = New System.Text.UTF8Encoding(True)
Dim strBld As New System.Text.StringBuilder
Do While deinFileLesen.Read(b, 0, b.Length) > 0
 strBld.Append(temp.GetString(b))
Loop
deinFileLesen.Close()
deinFileLesen = Nothing
Me.TextBox1.Text = strBld.ToString()
Schreiben:
BSP1 (Button [Text mit UTF Format speichern / File.Create])
Dim deinFileWrite As FileStream
deinFileWrite = File.Create("C:\data\wordsUTF.txt")
Dim info As Byte() = New System.Text.UTF8Encoding(True).GetBytes(Me.TextBox1.Text)
deinFileWrite.Write(info, 0, info.Length)
deinFileWrite.Close()
deinFileWrite = Nothing
Bsp2 (Button [StreamWriter/  File.CreateText])

Dim deinFileWrite As StreamWriter
deinFileWrite = File.CreateText("C:\data\wordsUTF.txt")
deinFileWrite.Write(Me.TextBox1.Text)
deinFileWrite.Close()
deinFileWrite = Nothing

Die Beispiele unterscheiden sich zum grössten Teil durch die Verwendeten Streams. So nutzen wir zum Beispiel die Klasse System.File welche zwei Methoden Create() oder CreateText() anbietet. Dies beiden Methoden geben unterschiedliche Stream Typen zurück.

Dateioperationen mit .net


Auch hier gibt es zwei Ansatzarten. Entweder man arbeitet mit System.File und den entsprechenden Methoden oder man nutzt die FileIno Klasse welche wir später noch kennenlernen werden.
Fügen Sie drei weitere Buttons auf die Form:
[Datei kopieren]
[Datei verschieben]
[Datei löschen]

Kopieren von Dateien

 Dim path As String = "c:\data\words.txt"
 Dim path2 As String = "Kopie von " + path
 Try
  File.Delete(path2)
  File.Copy(path, path2)
  File.Copy(path, path2, True)

 Catch ex As Exception
  TextBox1.Text = "Fehler beim Datei kopieren :" + ex.Message
 End Try

Verschieben von Dateien

Bemerkung diese Funktionaltität können Sie auch nutzen wenn Sie Dateien umbenennen wollen:

Dim path As String = "c:\data\words.txt"
Dim path2 As String = "Kopie von " + path

Try
 File.Delete(path2)
 File.Move(path, path2)
 File.Move(path, path2)
Catch ex As Exception
 TextBox1.Text = "Fehler beim Datei kopieren :" + ex.Message
End Try

Löschen von Dateien

Dim path As String = "c:\data\words.txt"
Dim path2 As String = "Kopie von " + path
File.Delete(path2)

 

Verzeichnissystem mit Directory

Nun folgt ein Beispiel um alle Laufwerke eines Computers auszulesen und die darin enthaltenen Verzeichnisse und Dateien anzuzeigen.
Fügen Sie der WebForm einen Button [Dateisystem Beispiel] und drei ListBoxen [lbDrives],[lbFolders],[lbFiles] hinzu.
Klicken Sie doppelt auf den Button [Dateisystem Beispiel] und fügen Sie folgenden Code ein:

Dim drive As String
For Each drive In Directory.GetLogicalDrives()
 Me.lbDrives.Items.Add(drive)
Next
Klicken Sie dann doppelt auf die erste ListBox [lbDrives] und implementieren Sie den SelectedIndexChanged Eventhandler mit diesem Code:
Me.lbFolders.Items.Clear()
Me.lbFiles.Items.Clear()
Dim fullPath As String = Me.lbDrives.SelectedItem.Text
Dim dir As String
For Each dir In Directory.GetDirectories(fullPath)
 Me.lbFolders.Items.Add(Path.GetFileName(dir))
Next
Dim fileName As String
For Each fileName In Directory.GetFiles(fullPath)
 Me.lbFiles.Items.Add(Path.GetFileName(fileName))
Next

 

Übrigens: Wenn Sie eingeschworener VB Entwickler sind, dann hab ich da noch was für Sie: Das Modul FileSystem aus dem Microsoft.VisualBasic Namespace ist einen Blick wert (ja auch für C# Entwickler ;-) )


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 06.08.2004
  Gültig bis: 04.11.2004
8 Ratings
Bewertung: 65,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG