DevTrain

Autor: Hannes Preishuber

Nützliche Helferlein aus System.IO

In der Klassenbibliothek des .NET Frameworks findet sich das ein oder andere Heinzelmännchen, das den Job Quasi über Nacht von alleine erledigt für den man bisher richtig Aufwand treiben musste. Nehmen wir nur mal als Beispiel das extrahieren einer Extension aus einem UNC Pfad.

E:WINNTSYSTEM32WIN.INI

Der langjährige Programmierer schreibt sich für solche und ähnliche Aufgaben seine eigene Klassenbibliothek. Nun diese Aufgabe würde nun  für .NET auch anstehen. Diese Zeit können Sie sich sparen, den im NameSpace System.IO finden sich einige interessante Klassen die einem diese Mühe ersparen.

Noch ein Hinweis an alle Entwickler die glauben, das eine Sprache ohne eigenes Framework sowieso nicht zu gebrauchen ist. Lesen Sie weiter und Sie werden begeistert sein! (um keine härteren Worte zu gebrauchen)

System.IO enthält allgemein Klassen für Filezugriff.

BinaryReader 
FileInfo 
PathTooLongException 
BinaryWriter 
FileLoadException 
SeekOrigin 
BufferedStream 
FileMode 
Stream 
Directory 
FileNotFoundException 
StreamReader 
DirectoryInfo 
FileShare 
StreamWriter 
DirectoryNotFoundException 
FileStream 
StringReader 
EndOfStreamException 
FileSystemInfo 
StringWriter 
File 
IOException 
TextReader 
FileAccess 
MemoryStream 
TextWriter 
FileAttributes 
Path 

Im besonderen möchte ich auf die letzte Klasse PATH eingehen. Eigentlich mehr durch Zufall bin ich auf diese gestossen und war begeistert von den Möglichkeiten. Offen blieb eigentlich nur die Frage:wie habe ich bisher ohne leben können?

Die Methoden im Detail sind vom Namen (wie oft im Framework) selbsterklärend. Obige Aufgabe (das extrahieren der Extension) wird über die Funktion GetExtension erledigt.

ChangeExtension ( String path , String extension ) 
Combine ( String path1 , String path2 ) 
GetDirectoryName ( String path ) 
GetExtension ( String path ) 
GetFileName ( String path ) 
GetFileNameWithoutExtension ( String path ) 
GetFullPath ( String path ) 
GetPathRoot ( String path ) 
GetTempFileName ( ) 
GetTempPath ( ) 
HasExtension ( String path ) 
IsPathRooted ( String path )

Besondere Beachtung verdienen allerdings auch noch die eingebauten Konstanten. Diese sind Namentlich in alphabetischer Reihenfolge ;-)

AltDirectorySeparatorChar 
DirectorySeparatorChar 
InvalidPathChars 
PathSeparator 
VolumeSeparatorChar

Warum brauche ich diese? Eine übliche vorgehensweise bei Fileoperationen im ASP Bereich ist:
Pfad=Server.Mappath(".")+""+filename+".txt"

Der echte Pfad wird (nach wir vor)  durch die Server Funktion Mappath ausgelesen. Leider ( oder auch und das ist gut so) ohne den vom Betriebssystem benötigten "". Da das .NET Framework in naher Zukunft wahrscheinlich auf anderen System wie z.B. Linux verfügbar sein wird, wäre eine solche Zeile Code ein programmierter Bug. Linux erwartet einen "/" als Pfadtrenner. Auch heute schon kann eine Fileresource von einem Linuxserver aus .NET genutzt werden. Das Szenario liegt also nicht mehr in weiter Ferne.
Der Clou ist nun den PathSeperator aus der Path Klasse zu verwenden. Der Repräsentiert den für das System passenden Trenner.

Im folgenden ein paar Zeilen Code mit der ein File nach einem Upload gespeichert wird. Der Filename aus dem HTML File Control enthält den vollen Client Pfad. Über GetFilename wird der pure Dateiname erzeugt. Beim Speichern wird dann der Directoryseperator eingebunden.

Dim FileName As String
FileName = path.getfilename(File1.PostedFile.FileName())
If FileName > "" Then
        File1.PostedFile.SaveAs(Server.MapPath(".") & Path.DirectorySeparatorChar & FileName)
End If

Dieser Artikel bezieht sich auf die Beta 2 des .NET Frameworks.

 


 


Erfasst am: 16.11.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=652
© Copyright 2003 ppedv AG - http://www.ppedv.de