Holger Stehle

Softwareentwicklung und -architektur

« Temporäre Datei erstellen und implizit löschen

Hin und wieder kann es – beispielsweise bei der Arbeit mit Datenströmen – sinnvoll bzw. notwendig sein, mit Dateien zu arbeiten, die nur vorübergehend benötigt werden. Das .NET-Framework unterstützt dies mit der Methode Path.GetTempFileName(), ohne jedoch die Datei implizit wieder zu entfernen.

Um diesen kleinen Makel zu beheben, bietet sich eine kompakte Implementierung wie die folgende Lösung an, welche auf using basiert:

public class TemporaryFile : IDisposable {
    public string Name {
        get;
        private set;
    }

    public TemporaryFile() {
        this.Name = Path.GetRandomFileName();
    }

    public void Dispose() => File.Delete(this.Name);
}

Die Verwendung gestaltet sich nun sehr komfortabel, wobei die Datei innerhalb der entsprechenden Anweisung existiert und wie üblich verwendet werden kann; anschließend wird diese automatisch wieder gelöscht:

/* Datei existiert noch nicht */

using(TemporaryFile temporaryFile = new TemporaryFile()) {
    /* Datei existiert ab sofort */

    File.WriteAllBytes(temporaryFile.Name, new byte[] {
        0x01, 0x03, 0x03, 0x07
    });

    /* Datei existiert weiterhin */
}

/* Datei existiert nicht mehr */