Как прикоснуться к файлу в C #? - PullRequest
52 голосов
/ 11 ноября 2009

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

Ответы [ 3 ]

68 голосов
/ 11 ноября 2009
System.IO.File.SetLastWriteTimeUtc(fileName, DateTime.UtcNow);
2 голосов
/ 04 июля 2013

Это работает. Может вызвать исключение 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);
}
1 голос
/ 12 марта 2011

Ваше решение с 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

РЕДАКТИРОВАТЬ: Следующее свойство может быть установлено для заблокированного файла: new FileInfo(filePath).LastWriteTime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...