2017-08-30 6 views
0

Ich arbeite an einem Projekt für Windows Mobile 6.5. Ich verwende C# mit Compact Framework 3.5 (CF 3.5) und SDK für Windows Mobile 6.5.Fehler beim Löschen der Datei unter Windows Mobile 6.5

Meine Routine schreibt Dateien zur weiteren Verarbeitung in ein temporäres Verzeichnis. Nach einigen Tagen wird die Datei umbenannt und auf eine Bereinigung verwiesen.

Beim Versuch, die Datei zu löschen, tritt der folgende Fehler auf: Zugriff auf den Pfad '\ Anwendungsdaten \ Volatile \ Temp \ 20170822-97703.Nf.env' wird verweigert.

Wo:

  • \ Anwendungsdaten \ Volatile das temporäre Verzeichnis Standard ist Path.GetTempPath()
  • \ Temp ist mein temporäres Verzeichnis
  • 20170822-97703.Nf.env ist meine Datei.

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]; 
     } 

Speichern

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; 
      } 
     } 

Mark die Datei Datei als

verarbeitet
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

Vielleicht ist die Datei gesperrt und wird nach einem Neustart löschen-fähig sein. Wenn Sie einen Versuch/Fang um File.Delete hinzufügen, können Sie es beim nächsten Mal erneut versuchen. – stuartd

+0

Wir müssen den Code sehen, der die temporäre Datei erstellt und schreibt. Es ist sehr wahrscheinlich, dass Sie den Dateigriff zu diesem Zeitpunkt nicht freigeben. – ctacke

+0

Fügen Sie die Funktionen zum Speichern und Umbenennen hinzu. Quando salvo o arquivo eu fecho oder mesmo, mas quando renomeio o arquivo não. Ist es notwendig? –

Antwort

0

Um die Datei zu löschen, kann ich den Namen der Datei und die Zeile geändert unter

Directory.Delete(file);

für

File.Delete(file);

Verwandte Themen