9 Stimmen

Erzeugen eines eindeutigen temporären Dateinamens mit einer bestimmten Erweiterung mit .NET

重複の可能性あり。
Wie kann ich eine temporäre Datei mit einer bestimmten Erweiterung mit .net erstellen?

Es ist möglich, eine temporäre Datei in .NET zu erstellen, indem man

string fileName = System.IO.Path.GetTempFileName();

Dadurch wird eine Datei mit der Erweiterung .TMP im temporären Verzeichnis erstellt.

Was ist, wenn Sie ausdrücklich eine andere Erweiterung wünschen? Nehmen wir an, ich bräuchte eine Datei mit der Endung .TR5.

Die offensichtliche (und fehleranfällige) Lösung ist der Aufruf von

string fileName = Path.ChangeExtension(Path.GetTempFileName(), "tr5"))

Die Probleme dabei sind:

  • Es hat immer noch eine leere Datei (z.B. tmp93.tmp) im Temp-Verzeichnis erzeugt, die nun auf unbestimmte Zeit herumhängt
  • Es gibt keine Garantie dafür, dass der resultierende Dateiname (tmp93.tr5) nicht bereits existiert

Gibt es eine einfache und sichere Möglichkeit, eine temporäre Datei mit einer bestimmten Dateierweiterung zu erzeugen?

11voto

Mitch Wheat Punkte 287474

1voto

Mircea Grelus Punkte 2777

Ich weiß nicht, ob es eine unterstützte Methode zur Erzeugung einer anderen Erweiterung als .tmp gibt, aber so erhalten Sie eine eindeutige Datei:

string fileName = Path.ChangeExtension(Path.GetTempFileName(), Guid.NewGuid().ToString() + "tr5"))

Das ist keine elegante Lösung, und ich bin mir nicht sicher, ob Sie dann auf der Grundlage einer bestimmten Erweiterung abrufen müssen, aber Sie könnten auch dafür ein Muster schreiben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X