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?
Réponses
Trop de publicités?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);
}
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