2011-03-15 5 views
5
// (1) create test file and delete it again 
File.Create(Path.Combine(folder, "testfile.empty")); 
File.Delete(Path.Combine(folder, "testfile.empty")); 

La última línea se emite una excepción:Tratando de crear un archivo y eliminarlo inmediatamente

El proceso no tiene acceso al archivo '\\ MIPC \ C $ _AS \ RSC \ testfile.empty' porque está siendo utilizado por otro proceso .

¿Por qué es eso?

Respuesta

18

File.Create te devuelve una secuencia que no has cerrado.

using(var file = File.Create(path)) { 
    // do something with it 
} 
File.Delete(path); 

debería funcionar; o más fácil:

File.WriteAllBytes(path, new byte[0]); 
File.Delete(path); 

o incluso sólo:

using(File.Create(path)) {} 
File.Delete(path); 
3

Cuando creó el archivo, usted lo está utilizando hasta que se cierre - que no lo ha hecho, por lo tanto, el error.

Con el fin de cerrar el archivo, usted debe envolver la creación en un comunicado using:

using(var file = File.Create(Path.Combine(folder, "testfile.empty"))) 
{ 
} 
File.Delete(Path.Combine(folder, "testfile.empty")); 
1

tratar ..

File.Create(Path.Combine(folder, "testfile.empty")).Dispose(); 
File.Delete(Path.Combine(folder, "testfile.empty")); 
1

Create método devuelve una filestream que debe estar cerca antes de hacer otras operaciones:

FileStream fs=File.Create("testfile.empty"); 
fs.Close(); 
File.Delete("testfile.empty"); 
Cuestiones relacionadas