Erstellen Sie eine temporäre Datei aus dem Stream-Objekt in c #

8

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

    
Yair Nevet 23.10.2011, 15:56
quelle

5 Antworten

25

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.

    
Darin Dimitrov 23.10.2011, 16:05
quelle
7

Ein anderer Ansatz wäre hier:

%Vor%

Auf diese Weise wird die Datei nach dem Schließen entfernt.

Bearbeiten:

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%     
Anderson Matos 23.10.2011 16:03
quelle
6

Sie können einen temporären Dateinamen mit Path.GetTempFileName() erhalten, ein FileStream erstellen und mit Stream.CopyTo alle Daten aus Ihrem Eingabestream in die Textdatei kopieren:

%Vor%     
Jon 23.10.2011 16:02
quelle
1
%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.

    
Steve 23.10.2011 16:00
quelle
0

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.

    
Saeed Amiri 23.10.2011 16:01
quelle

Tags und Links