title: Detecting moved files using FileSystemWatcher
body: <p>I realise that FileSystemWatcher does not provide a Move event, instead it will generate a separate Delete and Create events for the same file.  (The FilesystemWatcher is watching both the source and destination folders).</p>
  
  <p>However how do we differentiate between a true file move and some random creation of a file that happens to have the same name as a file that was recently deleted?</p>
  
  <p>Some sort of property of the FileSystemEventArgs class such as "AssociatedDeleteFile" that is assigned the deleted file path if it is the result of a move, or NULL otherwise, would be great.  But of course this doesn't exist.</p>
  
  <p>I also understand that the FileSystemWatcher is operating at the basic Filesystem level and so the concept of a "Move" may be only meaningful to higher level applications.  But if this is the case, what sort of algorithm would people recommend to handle this situation in my application?</p>
  
  <p>Update based on feedback:</p>
  
  <p>The FileSystemWatcher class seems to see moving a file as simply 2 distinct events, a Delete of the original file, followed by a Create at the new location.  </p>
  
  <p>Unfortunately there is no "link" provided between these events, so it is not obvious how to differentiate between a file move and a normal Delete or Create.  At the OS level, a move is treated specially, you can move say a 1GB file almost instantaneously.</p>
  
  <p>A couple of answers suggested using a hash on files to identify them reliably between events, and I will proably take this approach.  But if anyone knows how to detect a move more simply, please leave an answer.</p>