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);
}
}
也许该文件被锁定,将在重新启动后删除,干练。如果你在File.Delete周围添加try/catch,那么你可以在下次再试一次。 – stuartd
我们需要看到创建和写入临时文件的代码。这很可能你没有在那个时候释放文件句柄。 – ctacke
添加保存和重命名功能。 Quando salvo o arquivo eu fecho o mesmo,mas quando renomeio o arquivonão。我需要吗? –