2017-08-30 9 views
0

Je travaille sur un projet pour Windows Mobile 6.5. J'utilise C# avec compact framework 3.5 (CF 3.5) et SDK pour Windows Mobile 6.5.Erreur lors de la suppression du fichier sous Windows Mobile 6.5

Ma routine écrit des fichiers dans un répertoire temporaire pour un traitement ultérieur. Après quelques jours, le fichier est renommé et dirigé vers une purge.

Lors de la tentative de suppression du fichier, l'erreur suivante se produit: L'accès au chemin d'accès '\ Application Data \ Volatile \ Temp \ 20170822-97703.Nf.env' est refusé.

Où:

  • \ Application Data \ Volatile est le répertoire temporaire par défaut Path.GetTempPath()
  • \ Temp est mon répertoire temporaire
  • 20170822-97703.Nf.env est mon fichier.

code:

const string dirTemp= "Temp"; 

public void PurgeFiles() 
     { 
      DateTime datePurge= new DateTime(); 
      datePurge= DateTime.Now.AddDays(-7); 
      var files= FindFiles(); 

      foreach (string file in files) 
      { 
       var dateAlt = Directory.GetLastWriteTime(file); 
       if (dateAlt< datePurge) 
       {      
        Directory.Delete(file); 
       } 
      } 
     } 

private string[] FindFiles() 
     { 
      string searchPattern; 
      string dirLocal; 

      dirLocal= Path.GetTempPath(); 
      dirLocal= Path.Combine(dirLocal, dirTemp); 

      if (Directory.Exists(dirLocal)) 
      { 
       searchPattern = "*.Env"; 
       var files = Directory.GetFiles(dirLocal, searchPattern); 
       return files; 
      } 
      else 
       return new string[0]; 
     } 

Enregistrer fichier

public bool SaveFile(string dir, string fileName, string content) 
     { 
      try 
      {     
       if (!Directory.Exists(dir)) 
        Directory.CreateDirectory(dir); 

       string pathFile = Path.Combine(dir, fileName); 

       if (File.Exists(pathFile)) 
        return true; 

       //Salva os dados 
       StreamWriter fileConf = new StreamWriter(pathFile); 
       fileConf.Write(content); 
       fileConf.Flush(); 
       fileConf.Close(); 

       return true; 
      } 
      catch (Exception ex) 
      { 
       return false; 
      } 
     } 

Marquer le fichier comme traitement

public void MarkFile(string fileName) 
     { 
      try 
      { 
       string newFileName= fileName + ".env"; 

       if (File.Exists(newFileName)) 
        return; 

       File.Move(fileName , newFileName); 
      }     
      catch (Exception ex) 
      { 
       throw new Exception(ex.Message); 
      } 
     } 
+0

Peut-être que le fichier est verrouillé et sera en mesure delete-après un redémarrage. Si vous ajoutez un try/catch autour de File.Delete, vous pouvez réessayer la prochaine fois. – stuartd

+0

Nous devons voir le code qui crée et écrit le fichier temporaire. Il est fort probable que vous ne libérez pas la poignée de fichier à ce moment-là. – ctacke

+0

Ajoutez les fonctions de sauvegarde et de renommage. Quand le salvo d'arquivo eu fecho o mesmo, mas quando renomeio o arquivo não. Isto é necessário? –

Répondre

0

Pour peut supprimer le fichier que j'ai changé le nom du fichier et la ligne ci-dessous

Directory.Delete(file);

pour

File.Delete(file);