it-swarm-ja.tech

C#でファイルを変更する方法

C#で、ファイルの内容を変更せずにファイルが変更された(つまり、最終変更日)ように見せるための最も簡単で安全な方法は何ですか?

53
Matt Howells
System.IO.File.SetLastWriteTimeUtc(fileName, DateTime.UtcNow);
69
Matt Howells

これは機能します。 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);
}
2

_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

0
kateroh