2009-12-16 4 views
1

chaque fois que je tente de supprimer ces fichiers quelques fois que je reçois ce message fichier ne peut pas être supprimé utilisé par un autre processus même si le fichier ne soit pas utilisé par un autre utilisateur le code ce que je suis en utilisantne peut pas être supprimé utilisé par un autre processus

try 
{ 

FileInfo TheFile = new FileInfo(MapPath(".") + "\\" + txtFile.Text); 
if (TheFile.Exists) { 
File.Delete(MapPath(".") + "\\" + txtFile.Text); 
} 
else { 

throw new FileNotFoundException(); 
} 
} 

catch (FileNotFoundException ex) { 

lblStatus.Text += ex.Message; 
} 

est là façon dont nous pouvons attribuer une valeur booléenne
ici si vrai moyen je peux afficher un tellingfile de message est supprimé avec succès valeur booléenne est fausse ici si des moyens faux je peux afficher un message fichier utilisé dire par un autre processus

je peux écrire cette condition ici File.Delete(MapPath(".") + "\\" + txtFile.Text); toute aide serait grand merci

+0

BTW vous avez 124 questions dont vous avez seulement accepté environ la moitié. Si vous recherchez une réponse rapide, suggérez-en quelques-unes. –

Répondre

0

Pourquoi ne pas essayer

if (TheFile.Exists) { 
    TheFile.Delete(); 
} 

?

+0

merci pour la relecture j'ai lié tout ce qui précède encore le même problème FileInfo mfile = new fileInfo() mFichier.Delete() quelques fois le fichier est supprimé parfois, il donne exception " disant utilisé par un autre processus" – happysmile

1

Vous pouvez utiliser la méthode

FileInfo.Delete

. Si le fichier n'existe pas, cette méthode ne fait rien.

Remarque

Vérifiez également pour toutes les autres descripteurs de fichiers qui a verrouillé ce fichier, les fermer avant de supprimer le fichier.

+0

Cette réponse fonctionnera ..- je crois, coz FileInfo.Delete lèvera une exception si le fichier est ouvert .. aussi essayez d'utiliser ce http://download.cnet.com/Unlocker/3000-2248_4-10493998.html pour vérifier si le fichier est verrouillé (et le processus wat le verrouille). –

3

Sur la base de mon expérience, si elle dit que le fichier est utilisé par un autre processus, le fichier est utilisé par un autre processus, tout ce que vous pensez ...

Télécharger ProcessExplorer pour savoir qui est le coupable est ...

0

Si le service d'indexation est activé, assurez-vous que ce dossier est exclu de la liste d'index.

0

Si vous voulez une méthode qui retourne juste vrai si le fichier a été supprimé avec succès, et faux sinon, je partirais avec:

 public bool DeleteFile(string fullPath) { 
      bool fileDeleted = false; 

      if (System.IO.File.Exists(fullPath)) 
      { 
       try 
       { 
        System.IO.File.Delete(fullPath); 
        fileDeleted = true; 
       } 
       catch (UnauthorizedAccessException) 
       { 
        // File is open **or read only** 
       } 
      } 
      else 
      { 
       // File does not exist 
      } 

      return fileDeleted; 
     } 
1

Un peu en retard à la fête, je sais, mais nous espérons que ces commentaires aidera les autres à sortir ->

Le problème ne se produit pas dans Chrome, mais dans IE6/7/8 et FF. Cette méthode fonctionne pour moi maintenant dans ces derniers navigateurs:

    try 
        { 

         System.IO.File.Delete(basePath + assetImage.Path); 
        } 
        catch 
        { 
         System.IO.File.Move(basePath + assetImage.Path, basePath + @"DELETE\ " + assetImage.Path); 
        } 
Questions connexes