2010-04-29 2 views
12

Ich möchte etwas wie das unten tun. Welche Funktion gibt mir eine eindeutige Datei zurück, die geöffnet ist? so kann ich sicherzustellen, dass es meins ist und ich nicht nichts überschreiben oder schreiben Sie eine komplexe fn erzeugen/SchleifeGet/öffnen temporäre Datei in. NET

BinaryWriter w = GetTempFile(out fn); 
w.close(); 
File.Move(fn, newFn); 

Antwort

19

Es gibt zwei mögliche Vorgehensweisen:

  • Path.GetTempFileName

    Dies wird ein erstellen temporäre Datei und geben Sie ihren Namen zurück.

  • Path.GetRandomFileName

    Dies wird eine kryptographisch starke, zufällige Zeichenfolge als Dateinamen verwenden und die Datei für Sie nicht erstellen.

Normalerweise genügt die erste Methode; Die Dokumentation für GetRandomFileName lautet:

Wenn die Sicherheit Ihres Dateisystems im Vordergrund steht, sollte diese Methode anstelle von GetTempFileName verwendet werden.

1

Kann die GetTempFileName()-Methode verwenden, um einen ziemlich eindeutigen temporären Dateinamen zu erhalten.

2

Sie können etwas tun:

var path = Path.GetTempFileName(); 
var stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None); 
var writer = new BinaryWriter(stream); 
    ... 
3

Eine weitere Alternative der TempFileCollection Klasse ist. Es stellt einen IDisposable-Wrapper bereit, ähnlich wie es in den Dokumenten für Path.GetTempFileName() vorgeschlagen wird.

+0

Das ist eine interessante Klasse. –

Verwandte Themen