Study-Board.de
  1. Suche
  2. Startseite
    1. Deals
      1. Social Deals
      2. Amazon Deals
      3. Prime Angebote
    2. Datenbanken
  3. Forum
    1. Dashboard
    2. Unerledigte Themen
    3. Gamification
    4. Umfragen
  4. Tippspiel
    1. Rangliste
    2. Tippgemeinschaften
    3. Tipper-Übersicht
    4. Meine Statistik
    5. Hall of Fame
    6. WM-Wertung
  5. Formel 1
    1. Rennen
    2. Fahrer
    3. Teams
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Forum
  • Artikel
  • Seiten
  • wcf.search.type.de.flexiblelist.wsc.entry
  • Termine
  • Galerie
  • wcf.search.type.com.amp.advancedpoll.search
  • Erweiterte Suche
  1. Study-Board.de
  2. Forum
  3. Leben, Familie & Technik
  4. Tools & Produktivität - iT-Talk

Das FileSystemObject (FSO) für Dateizugriff

  • Cort
  • 14. März 2002 um 12:15
  • Cort
    Erfahrener Benutzer
    Beiträge
    424
    • 14. März 2002 um 12:15
    • #1

    Das Lesen und Schreiben von Dateien ist seit dem IIS 4 durch ASP bzw VBScript relativ einfach.
    In diesem Workshop zeige ich euch, wie das im Einzelnen funktioniert.

    Ich zeige das am Beispiel einer Serverstatistik.
    Hier erstmal der Quellcode für die global.asa

    Code
    <SCRIPT LANGUAGE=\"VBScript\" RUNAT=\"Server\">
    
    
    Sub Session_onStart()
    On Error Resume Next
    
    
    DIM FSO, TextLog
    DIM FileName, TmpDate
    DIM SessionStartTime
    DIM RemoteHost, FirstPage
    DIM Browser
    
    Set FSO = Server.CreateObject(\"Scripting.FileSystemObject\")	
    
    
    FileName = DATE
    FileName = Replace(FileName, \".\", \"\")
    FileName = Server.MapPath(\"logfiles/\" & FileName & \".log\")
    Set TextLog = FSO.OpenTextFile(FileName, 8, TRUE, 0)
    
    
    SessionStartTime = Time
    RemoteIP = Request.ServerVariables(\"REMOTE_ADDR\")
    RemoteHost = Request.ServerVariables(\"REMOTE_HOST\")
    Firstpage = Request.ServerVariables(\"SCRIPT_NAME\")
    Browser = Request.ServerVariables(\"HTTP_USER_AGENT\")
    
    
    TextLog.WriteLine(\"*** New Session startet at \" & SessionStartTime & \" ***\")
    TextLog.WriteLine(\"RemoteHost: \" & RemoteHost)
    TextLog.WriteLine(\"RemoteIP: \" & RemoteIP)
    TextLog.WriteLine(\"Browser: \" & Browser)
    TextLog.WriteLine(\"Starting at Page: \" & FirstPage)
    
    
    TextLog.Close
    Set TextLog = nothing
    Set FSO = nothing
    
    End Sub
    
    
    
    
    </script>[/QUOTE] 
    
    
    Und der Quellcode für die Datei die das Logfile ausliest:
    
    
    [QUOTE]<% 
    
    
    Set FSO = Server.CreateObject(\"Scripting.FileSystemObject\")	
    
    
    FileName = DATE
    FileName = Replace(FileName, \".\", \"\")
    FileName = Server.MapPath(\"logfiles/\" & FileName & \".log\")
    Set TextLog = FSO.OpenTextFile(FileName, 1, TRUE, 0)
    
    
    While Not TextLog.AtEndOfStream
    	Response.Write(TextLog.ReadLine & \"<br>\")
    	Lines = Lines + 1
    Wend
    TextLog.Close
    TotalSessions = Lines / 5
    Response.Write(\"<hr>\")
    Response.Write(\"Total Sessions this Day: \" & TotalSessions)
    
    
    %>
    Alles anzeigen


    Ich gehe den Quelltext jetzt mal Zeile für Zeile durch

    GLOBAL.ASA
    1. Anfang der Datei
    3. Start der Sub Session_onStart
    4. Falls ein Fehler auftritt, weitermachen
    6. - 10. Deklaration der Variablen
    12. Instanziiren des FSO
    14. - 16. Dateiname aus dem aktuellen Datum zusammenbasteln
    17. Datei zum Schreiben öffnen, wenn sie nicht existiert wird die erstellt. Neue Daten werden am Ende angehängt
    19. - 23. Wertzuweisung an die Variablen
    25. - 29. Hier werden die Daten in die Datei geschrieben
    31. - 33. Objekte schliessen und zurücksetzen
    35. Ende der Sub
    38. Ende der Datei

    Datei zum auslesen
    5. - 7. Dateiname zusammenbasteln wie in der GLOBAL.ASA
    8. Instanziiren des FSO, öffnen der Datei zum Lesen
    10. - 13. Eine Schleife geht jede Zeile der Datei durch und gibt den Inhalt der Zeile aus. Ein Counter wird um 1 erhöht.
    14. Sobald das Ende der Datei erreicht ist, schliesse die Datei
    15. Die Anzahl der Zeilen in der Datei wird durch 5 geteilt umd die Anzahl der Datensätze rauszukriegen. 5, weil 5 Zeilen zu einem Datensatz gehören
    16. Eine Linie zeichnen
    17. Ausgabe, wieviele Datensätz in dieser Datei gespeichert sind

    Fertig :)


    Diesen Quelltext könnt Ihr 1:1 übernehmen, es muss nur in Zeile 16 der GLOBAL.ASA statt "logfiles/" der entsprechende Pfad angegeben werden. Dieser Ordner muss allerdings schreibrechte haben!

    Der Pfad muss auch in Zeile 7 der Auslesedatei angepasst werden.

    Was ich mir dabei gedacht habe:
    es soll für jeden Tag ein eigenes Logfile angelegt werden, es sollte schneller sein als eine Datenbank, und es sollte einfach zu programmieren sein.
    In Zeile 15 der GLOBAL.ASA benutze ich "Replace" um aus dem Datum die Punkte zu entfernen. Ich ersetze den Punkt gegen NIX.

    Wenn ich die Datei öffnen will wird sie automatisch neu erstellt, wenn sie noch nicht da ist.

    Is doch ganz einfach, oder?


    Man kann das schreiben von Dateien zum Beispiel auch dazu nutzen um Formulare zu speichern (ein Gästebuch zum Beipsiel, oder einen Shop)

    Wie immer, Fragen hier rein, ich beantworte so schnell wie möglich!

    Greetings, Cort

  • Tutor
    Tutor
    Trophäen
    1
    Beiträge
    26
    • 14. März 2002 um 12:15
    • #2

    {thxbotmessage }

    Ich weiß alles!

  1. admin Lv. 1 60 XP
  2. Jens Lv. 1 2 XP
Vollständige Bestenliste
  1. Dealfuchs.info
  2. Impressum
    1. Datenschutzerklärung
    2. Verhaltenskodex
      1. Learn to Post
  3. Mediadaten
  4. Study-Talk.de - Rabatte nicht nur für Studenten
  5. Kontakt
Community-Software: WoltLab Suite™