В С#, что самый простой/безопасный/самый короткий способ сделать файл, как если бы он был изменен (т.е. его последняя измененная дата), без изменения содержимого файла?
Как прикоснуться к файлу в С#?
Ответ 1
System.IO.File.SetLastWriteTimeUtc(fileName, DateTime.UtcNow);
Ответ 2
Это работает. Может генерировать DirectoryNotFoundException и различные другие исключения, созданные 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);
}
Ответ 3
Ваше решение с System.IO.File.SetLastWriteTimeUtc
не позволит вам коснуться файла, если файл используется. "Хакерный" способ прикоснуться к файлу, который используется, - это создать свой собственный touch.bat(поскольку Windows не имеет такого, как Linux, и отбрасывает его в \windows\system32, так что вы можете вызвать его из в любом месте без указания полного пути.
Тогда содержимое touch.bat будет (возможно, вы можете сделать это лучше без временного файла, это сработало для меня):
type nul > nothing.txt
copy /B /Y nothing.txt+%1% > nul
copy /B /Y nothing.txt %1% > nul
del nothing.txt
EDIT: В заблокированном файле может быть установлено следующее свойство: new FileInfo(filePath).LastWriteTime