2017-08-30 143 views
0

我正在为Windows Mobile 6.5项目工作。我正在使用Compact Framework 3.5(CF 3.5)的C#和Windows Mobile 6.5的SDK。错误在Windows Mobile 6.5删除文件

我的例程将文件写入临时目录作进一步处理。几天之后,该文件被重命名并导向清除。

当试图删除该文件时,会发生以下错误:对'\ Application Data \ Volatile \ Temp \ 20170822-97703.Nf.env'的访问被拒绝。

其中:

  • \应用数据\挥发性是默认的临时目录Path.GetTempPath()
  • 的\ Temp是我的临时目录
  • 20170822-97703.Nf.env是我的文件。

代码:

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

保存文件

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

文件标记为已处理

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

也许该文件被锁定,将在重新启动后删除,干练。如果你在File.Delete周围添加try/catch,那么你可以在下次再试一次。 – stuartd

+0

我们需要看到创建和写入临时文件的代码。这很可能你没有在那个时候释放文件句柄。 – ctacke

+0

添加保存和重命名功能。 Quando salvo o arquivo eu fecho o mesmo,mas quando renomeio o arquivonão。我需要吗? –

回答

0

要删除我改变文件和行的名称的文件低于

Directory.Delete(file);

File.Delete(file);