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);
}
}
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
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
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? –