Подтвердить что ты не робот

Как прикоснуться к файлу в С#?

В С#, что самый простой/безопасный/самый короткий способ сделать файл, как если бы он был изменен (т.е. его последняя измененная дата), без изменения содержимого файла?

4b9b3361

Ответ 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