2011-03-01 18 views
7

Cambiar el nombre de un archivo en C#:problema de cambio de nombre de archivo?

File.Move(source,Destination); 
      File.Delete(source); 

Se ejecuta con éxito, cómo cada vez cuando intento cambiar el nombre del archivo de nuevo, el sistema da esta excepción: El proceso no tiene acceso al archivo porque está siendo utilizado por otro proceso no puedo encontrar eso donde está esto en uso? cuando depuro el error, me muestra que el nombre de la clase está en el proceso de w3wp.exe que es IIS. ¿Qué debería hacer después? conseguir

foreach (string folder in folder) 
{ 
FileSystemItem item = new FileSystemItem(); 
DirectoryInfo di = new DirectoryInfo(folder); 
item.Name = di.Name; 
item.FullName = di.FullName; 
item.Path = path + "\\" + item.Name; 
item.CreatedDate = di.CreationTime; 
item.IsFolder = true; 
item.Extension = "folder"; 
listFolder.Add(item); 
} 
docList = CreatXmllist(listFolder); 
return docList 

así es como estoy consiguiendo lista de carpetas y luego se volvió a XML. a continuación, en la carpeta que consigo los archivos cuando hago clic en él

ahora para obtener las imágenes: este es el código

public xml (string path, List<l> one) 
    { 

     List<T> tt = new List<T>(); 
     List<T> SessionList = new List<T>(); 
     string[] files = Directory.GetFiles(HttpContext.Current.Request.PhysicalApplicationPath + path); 

     foreach (string file in files) 
     { 
      FileSystemItem item = new FileSystemItem(); 
      FileInfo i = new FileInfo(file); 
      string a = i.LastWriteTime.ToString(); 
      var thumbnails = from a in b where a.Name == fi.Name select t; 

      if (fi.Name != "a") 
       if (t.Count() == 0) 
       { 
        r session r = new r(); 
        r.aName = fi.aName; 
        SessionList.Add(r); 
        fi.Exists; 
       } 
       else 
        t.Add((T)t.First()); 

     } 
+3

¿Por qué está borrando la fuente después de haberla cambiado de nombre? – GolezTrol

+0

@ Golez Trol: porque moví el archivo (al igual que copiar) y le cambié el nombre por el nuevo nombre. – safi

+0

Creo que no hay necesidad de la segunda línea – hallie

Respuesta

2

No es necesario llamar a la File.Delete como parte del cambio de nombre, se lo habría necesitado si hicieras una copia.

+0

eliminé el archivo.delete (fuente) y aún así dándome el error :( – safi

1

Pruebe usar el enumerador FileShare. Luego intente abrir un archivo con monesharing, cierre el controlador y, si no hay excepciones, puede mover el archivo.

http://msdn.microsoft.com/de-de/library/system.io.fileshare.aspx

Contiene los métodos de lectura, escritura, etc.

+0

'FileStream s2 = new FileStream (nombre, FileMode.Open, FileAccess.Read, FileShare.Read);' hay un parámetro fileshare.read, por lo que será posible eliminar si ya está abierto por otro usuario? – safi

+0

Sí, eso debería funcionar. –

+0

bien, gracias, estoy tratando de hacerlo, entonces tengo que especificar el s2 en el archivo.move (fuente, dest), por lo que será como file.move (s2, destino)? – safi

1

Crear una instancia FileInfo, en la que puede cambiarle el nombre más de una vez.

FileInfo file = new FileInfo(source); 
file.MoveTo(destination); 

// execute more code 

file.MoveTo(destination2) 
+0

Peter Van Kekem: todavía no funciona :( – safi

+0

¿Podría publicar más detalles sobre la excepción? (Stacktrace, excepción interna, tal vez algo del visor de eventos) –

+0

¿puedo obtener ayuda con respecto a este problema? – safi

Cuestiones relacionadas