Lesen von Textdateien
Geschrieben von: Christian Koller Textdateien kann man in kleinen ASP-Applikationen vielfältig einsetzen. Ob man sie als Speicherplatz für Daten benutzt, oder als Steuerungsdateien für bestimmte Anweisungen. Um Zugriff auf Textdateien zu erlangen, benutzt man unter ASP das FileSystemObject Objekt. Dieses ist Teil der Scripting Library, die mit VBScript geliefert wird. Methoden zum Lesen von TextdateienUm eine Textdatei in einer ASP-Seite lesen zu können, benötigt man nur das FileSystemObject und die zugehörige OpenTextFile Methode. Das folgende Skript öffnet beispielsweise die Datei C:\Testdateien\MeineDatei.txt, speichert den Inhalt in der Textvariable strInhalt, und gibt dann den Inhalt aus: <% ' +++ Konstanten und Variablen deklarieren Const fsForReading = 1 Dim strDateiname, strInhalt, strInhaltHTML Dim objFs ' FileSystemObject Objekt Dim objTextStream ' Textstream Objekt ' +++ Datei, deren Inhalt gelesen wird: strDateiname = "C:\Testdateien\MeineDatei.txt" ' +++ FileSystemObject anlegen und in fs speichern: Set objFs = CreateObject("Scripting.FileSystemObject") ' +++ Textstream oeffnen, erlaubt Zugriff auf den Inhalt der Datei Set objTextStream = objFs.OpenTextFile(strDateiname, fsForReading) ' +++ Gesamten Datei-Inhalt lesen und in strInhalt speichern strInhalt = objTextStream.ReadAll ' +++ Datei-Inhalt in HTML umwandeln strInhaltHTML = Server.HTMLEncode(strInhalt) strInhaltHTML = Replace(strInhaltHTML,vbCrLf,"<BR>" & vbCrLf) ' +++ Datei-Inhalt als HTML formatiert ausgeben Response.Write strInhaltHTML ' +++ Textstream schliessen objTextStream.Close ' +++ Resourcen freigeben Set objTextStream = Nothing Set objFs = Nothing %> Analyse des Skripts: Die Konstante fsForReading erhält den Wert 1 - Sie wird beim Öffnen des TextStreams (Datei-Inhalt) benötigt. Der Variablen strDateiname wird der physikalische Pfad einer Textdatei zugeweisen. Ein FileSystemObject Objekt wird erstellt und in objFs gespeichert. Durch das FileSystemObject bekommt man Zugriff auf Dateien und Ordner, deren Attribute und Inhalte. Um auf den Datei-Inhalt der Textdatei zugreifen zu können, benötigt man ein TextStream Objekt. Dieses repräsentiert den Inhalt einer Datei und erlaubt Zugriff auf den Textinhalt der Datei (ähnlich wie ein Recordset Objekt Zugriff auf den Inhalt einer Datenbank erlaubt). Mittels der ReadAll Methode wird der gesamte Inhalt der Datei gelesen und in der Variable strInhalt gespeichert. Um den Inhalt aus strInhalt HTML-gerecht zu formatieren, verwendet das Skript die Server.HTMLEncode Funktion. Die Replace Funktion bewirkt, daß Zeilenumbrüche durch <BR> ersetzt werden. Nachdem nun der HTML-formatierte Inhalt der Datei mittels Response.Write ausgegeben wurde, wird der TextStream durch Aufruf der Close Methode geschlossen. Sämtliche vom FileSystemObject und dem TextStream Objekt noch belegten Resourcen werden durch Set Objekt = Nothing freigegeben. Wenn man eine sehr große Textdatei liest, so kann es zweckmässig sein, nur eine Zeile, oder eine bestimmte Anzahl von Zeichen zu lesen. Dazu öffnet man einen TextStream der Datei, und verwendet statt der ReadAll Methode die Read oder die ReadLine Methode. Die Read Methode liest eine bestimmte Anzahl von Zeichen aus: strText = objTextStream.Read(AnzahlBuchstaben) Um beispielsweise von einer Textdatei jeweils 17 Buchstaben zu lesen, bis der gesamte Inhalt gelesen wurde, geht man wie folgt vor: ... lngAnz= 17 While Not TextStream.AtEndOfStream Response.Write TextStream.Read(lngAnz) Wend ... Die While...Wend Schleife wird solange durchlaufen, bis der gesamte Inhalt zum Browser geschrieben wurde. Die objTextStream Eigenschaft AtEndOfStream liefert TRUE (Wahr), wenn bereits der gesamte Inhalt gelesen wurde. Die ReadLine Methode arbeitet ähnlich wie die Read Methode. Sie liest eine ganze Zeile aus der Textdatei und übergibt diese Zeile (ohne Zeilenschaltung) als Ergebnis: strTextZeile = objTextStream.ReadLine Um nun also die gesamte Datei zeilenweise zu lesen, kann man eine Schleife wie folgt benutzen: ... While Not TextStream.AtEndOfStream Response.Write TextStream.ReadLine & "<BR>" Wend ... Umwandeln eines virtuellen in einen physikalischen Datei-PfadSehr oft kann man in einem ASP-Skript nur den virtuellen Pfad einer Datei angeben. Der virtuelle Pfad /text/datei05.txt verweist auf die Datei namens datei05.txt, die im Unterverzeichnis text der Webserver Root (Website Homedirectory) liegt. Der virtuelle Pfad MeinText.txt hingegen verweist auf die Datei MeinText.txt, die im selben Verzeichnis wie die ASP-Datei liegt. Um einen virtuellen Pfad in den entsprechenden physikalischen Pfad umzuwandeln, verwendet man die Server.MapPath Funktion: strVirtPfad = "/text/datei05.txt" strPhysPfad = Server.MapPath(strVirtPfad) Spezialfall: Um den virtuellen Pfad der ASP-Datei selbst herauszufinden, benutzt man die folgende Funktion: strVirtPfadSelbst = Request.ServerVariables("SCRIPT_NAME") Letztendlich sind auch ASP- und HTML-Dateien nichts anderes als Textdateien, die man aus einer ASP-Seite heraus lesen, ändern, oder neu schreiben kann. SchlußbemerkungMan kann nicht nur Textdateien lesen, sondern aus ASP heraus auch den Inhalt von Dateien überschreiben, neue Textdateien anlegen, oder Text an den Inhalt einer Datei anfügen. Dies wird in einem weiterem Artikel ausführlich behandelt werden. Verwandte Artikel
Dateiattribute unter ASP auslesen Wenn Sie jetzt Fragen haben...Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten. Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.
Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.
©2000-2006 AspHeute.com |