« 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 */