73 votes

Comment toucher un fichier en C #?

En C #, quel est le moyen le plus simple / le plus sûr / le plus court de faire en sorte qu'un fichier apparaisse comme s'il avait été modifié (c'est-à-dire sa date de dernière modification) sans en modifier le contenu?

94voto

Matt Howells Points 20751
System.IO.File.SetLastWriteTimeUtc(fileName, DateTime.UtcNow);

7voto

Edward Ned Harvey Points 405

Cela marche. Peut déclencher une exception DirectoryNotFoundException et diverses autres exceptions générées par File.Open ().

 public void Touch(string fileName)
{
    FileStream myFileStream = File.Open(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
    myFileStream.Close();
    myFileStream.Dispose();
    File.SetLastWriteTimeUtc(fileName, DateTime.UtcNow);
}
 

-1voto

kateroh Points 1983

Votre solution avec System.IO.File.SetLastWriteTimeUtc ne vous laissera pas toucher le fichier, si le fichier est en cours d'utilisation. Un "hacky" moyen de toucher un fichier qui est en cours d'utilisation serait de créer votre propre touche.chauve-souris (car Windows ne pas en avoir un comme Linux n') et le déposer dans \windows\system32, de sorte que vous pouvez appeler à partir de n'importe où, sans spécifier un chemin d'accès complet.

Le contenu de la ligne de touche.chauve-souris serait alors (probablement que vous pouvez faire mieux sans un fichier temp, cela a fonctionné pour moi):


type nul > nothing.txt 
copy /B /Y nothing.txt+%1% > nul 
copy /B /Y nothing.txt %1% > nul 
del nothing.txt

EDIT: La propriété suivante peut être définie sur un fichier verrouillé: new FileInfo(filePath).LastWriteTime

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X