如何在C#中触摸文件?

在C#中,什么是最简单/最安全/最短的方式来使文件看起来好像它已被修改(即最后修改date),而不改变文件的内容?

System.IO.File.SetLastWriteTimeUtc(fileName, DateTime.UtcNow); 

使用System.IO.File.SetLastWriteTimeUtc时,您的解决scheme不会让您触摸该文件(如果该文件正在使用中)。 触摸正在使用的文件的“黑客”方法是创build自己的touch.bat(因为Windows没有像Linux那样的)并将其放到\ windows \ system32中,以便可以从没有指定完整path的任何地方。

touch.bat的内容将会是(可能你没有临时文件可以做得更好,这对我有用):

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

编辑:可以在一个locking的文件上设置以下属性: new FileInfo(filePath).LastWriteTime

这工作。 可能会抛出DirectoryNotFoundException,以及File.Open()抛出的各种其他exception

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