Wenn ein stream-Objekt eine xlsx-Datei enthält, möchte ich es als temporäre Datei speichern und löschen, wenn ich die Datei nicht mehr verwende.
Ich dachte daran, eine class
zu erstellen, die IDisposable
implementiert und sie mit dem using
-Code-Block verwendet, um die temporäre Datei am Ende zu löschen.
Haben Sie eine Idee, wie Sie den Stream in einer temporären Datei speichern und am Ende der Verwendung löschen können?
Danke
Sie können die Klasse TempFileCollection verwenden:
%Vor% Das Schöne daran ist, dass selbst wenn eine Ausnahme ausgelöst wird, die temporäre Datei dank des using
-Blocks garantiert entfernt wird. Standardmäßig erzeugt dies die Datei in dem temporären Ordner, der auf dem System konfiguriert ist, aber Sie können auch einen benutzerdefinierten Ordner angeben, wenn Sie den TempFileCollection
-Konstruktor aufrufen.
Ein anderer Ansatz wäre hier:
%Vor%Auf diese Weise wird die Datei nach dem Schließen entfernt.
Wenn Sie nicht möchten, dass der Stream zu lange lebt (zB: nur eine einzige Schreiboperation oder eine einzelne Schleife zum Schreiben ...), können Sie, wie vorgeschlagen, diesen Stream in einen using-Block schreiben. Damit müssen Sie es nicht manuell entsorgen.
Code wäre wie:
%Vor%BEARBEITEN:
Tut mir leid, vielleicht bin ich es nur, aber ich hätte schwören können, dass Sie, als Sie die Frage zum ersten Mal gestellt haben, nicht alle Details über eine Klasse, die IDisposable implementiert, haben. Wie auch immer, ich bin mir nicht wirklich sicher Frage in deiner (bearbeiteten?) Frage. Aber diese Frage: Any idea of how to save the stream to temp file and delete it on the end of use?
ist ziemlich geradlinig. Eine beliebige Anzahl von Google-Ergebnissen wird für ".NET C # Stream zu Datei" oder so zurückkommen.
Ich schlage nur vor, die Datei Path.GetTempFileName()
zu erstellen. aber andere hängen von Ihrem Verwendungs-Szenario ab, zum Beispiel, wenn Sie es in Ihrer temporären Erstellerklasse erstellen und es nur dort verwenden möchten, ist es gut, using
keyword zu verwenden.
Tags und Links c# stream using idisposable