Temporäre Dateien anlegen und verwenden

Veröffentlicht: 19. Mai 2004 | Aktualisiert: 15. Nov 2004

Von Mathias Schiffer

In temporäre Dateien lässt sich manches auslagern, das gerade nicht im Hauptspeicher benötigt wird. Damit nicht jede Anwendung solche Dateimengen selber verwalten muss, bietet Windows Hilfestellung.

Das Betriebssystem stellt für Temporärdateien einen bestimmten Pfad bereit. Das ist weniger trivial als es zunächst wirken mag: Denken Sie etwa an quer über die Festplatten verbreiteten Dateimüll nach einem Systemabsturz.

Das .NET Framework stellt im Namespace System.IO.Path die Funktion GetTempPath zur Verfügung, um dieses zentrale Verzeichnis zu ermitteln. Ein einfacher Aufruf liefert Ihnen den Pfad zum aktuellen, benutzerabhängigen Temporärverzeichnis als String zurück.

Imports System.IO.Path 
   
' ... 
   
' Stringvariable bereithalten 
Dim strTempDir As String 
   
  ' TEMP-Verzeichnis ermitteln: 
  strTempDir = IO.Path.GetTempPath 
   
  ' Ausgabe ins Konsolenfenster 
  Console.WriteLine(strTempDir)

Auf der anderen Seite bringt dieses zentrale Verzeichnis für temporäre Dateien aber auch mit sich, dass Anwendungen sich über bisher unbenutzte Namen für Dateien in diesem Verzeichnis informieren können müssen, um eine neue, eigene Temporärdatei verwenden zu können, die nicht mit anderen Anwendungen kollidiert.

Auch hier hilft Windows aus, indem es auf Anforderung einen eindeutigen Dateinamen bereitstellt. Aber Achtung: Die .NET Framework-Funktion GetTempFileName weist Ihnen nicht nur den Pfad (inkl. TEMP-Verzeichnis) zu einem von Ihnen nutzbaren Dateinamen zu, der den Suffix ".TMP" trägt: Sie erzeugt die Datei sogar bereits für Sie! Achten Sie darauf, wenn Sie diese Funktion verwenden, da Sie schnell unbemerkt Hunderte von 0 Byte langen Dateileichen im Temporärverzeichnis erzeugen könnten!

Imports System.IO.Path 
   
' ... 
   
' Stringvariable bereithalten 
Dim strTempFile As String 
   
  ' Einen freien Tempärardateinamen abfragen 
  ' VORSICHT: Der zurückgegebene Dateiname 
  ' wird (als leere Datei) angelegt! 
  strTempFile = IO.Path.GetTempFileName 
   
  ' Ausgabe ins Konsolenfenster 
  Console.WriteLine(strTempFile)ir)

Als Beispiel hier eine Temporärdatei, die als "Zwischenablage" für Text dient. So erzeugen Sie die Datei, geben Text ein, lesen den Text und löschen ihn, nachdem der verwendete Temporärdateiname und der ausgelesene Text wiedergegeben wurden:

Imports System.IO.Path 
   
' ... 
   
' Stringvariable bereithalten 
Dim strTempFile As String 
   
  ' Einen freien Tempärardateinamen abfragen 
  ' VORSICHT: Der zurückgegebene Dateiname 
  ' wird (als leere Datei) angelegt! 
  strTempFile = IO.Path.GetTempFileName 
   
  ' Einen StreamWriter für das Schreiben in die 
  ' Temporärdatei neu anlegen: 
  Dim StreamW As IO.StreamWriter _ 
              = New IO.StreamWriter(strTempFile) 
  StreamW.WriteLine("Text, der in der Temporärdatei gespeichert wird.") 
  StreamW.Close() 
   
  ' Einen StreamReader erzeugen, um die Datei auszulesen: 
  Dim StreamR As IO.StreamReader _ 
              = New IO.StreamReader(strTempFile) 
  Dim strRead As String = StreamR.ReadToEnd() 
  StreamR.Close() 
   
  ' Aus der Temporärdatei ausgelesenen Text ausgeben: 
  Console.WriteLine("Die Temporärdatei{0}{1}{0}wurde genutzt, " & _ 
                    "um den folgenden Text zwischenzuspeichern:{0}{2}", _ 
                    vbNewLine, strTempFile, strRead) 
   
  ' Temporärdatei löschen  
  Kill(strTempFile)