2010-04-29 17 views
12

Me gustaría hacer algo como el siguiente. ¿Qué función me devuelve un archivo único que se abre? para que pueda asegurarse de que es mío y no voy a sobreescribo nada o escribir un complejo fn generan/bucleObtener/abrir archivo temporal en .NET

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

Respuesta

19

Hay dos métodos para esto:

  • Path.GetTempFileName

    Esto creará una archivo temporal y devolver su nombre.

  • Path.GetRandomFileName

    Esto utilizará una cadena aleatoria sólidamente como nombre de archivo y no creará el archivo para usted.

Por lo general, el primer método es suficiente; la documentación para GetRandomFileName dice:

Cuando la seguridad de su sistema de archivos es primordial, este método se debe utilizar en lugar de GetTempFileName.

1

Puede utilizar el método GetTempFileName() para obtener un nombre de archivo temporal bastante único.

2

se puede hacer algo como esto:

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

Otra alternativa es la clase TempFileCollection. Proporciona un contenedor IDisposable muy parecido a lo que se sugiere en los documentos para Path.GetTempFileName().

+0

Esa es una clase interesante. –

Cuestiones relacionadas