vb.net文件监视返回错误的文件名

时间:2010-02-03 02:35:27

标签: .net vb.net filesystemwatcher

我正在尝试使用VB.Net FileSystemWatcher类来查看用于创建Excel文件的文件夹。我在文件夹中创建.xls文件时得到响应,但是我遇到了以下代码的问题:

Private Sub AddWatch()

Dim watch As New FileSystemWatcher

        AddHandler watch.Changed, AddressOf FileChange
        watch.Filter = "*.*"
        watch.NotifyFilter = NotifyFilters.LastWrite
        watch.Path = "C:\Documents and Settings\my.user\Desktop\testing"
        watch.EnableRaisingEvents = True
End Sub

    Private Sub FileChange(ByVal obj As Object, ByVal e As System.IO.FileSystemEventArgs)

        Debug.Print("changetype is: " & e.ChangeType.ToString & ", path is: " & e.FullPath.ToString)
    End Sub

当我在此文件夹中创建文本文件时,我会找回正确的文件名(“C:\ Documents and Settings \ my.user \ Desktop \ testing \ foo.txt”)。但是,当我将Excel文件保存到文件夹中时,路径仍然是正确的,但文件名是垃圾(每次都有相同的文件名,总是8个字符,如“C:\ Documents and Settings \ my.user \ Desktop” \ testing \ DE0B5800“。)在这个搜索谷歌或这里找不到东西,而MSDN像往常一样没什么帮助。有人在此之前遇到过这个或知道我可以在哪里找到更多信息吗?

1 个答案:

答案 0 :(得分:1)

http://support.microsoft.com/kb/814068

总结:

  

当Excel保存文件时,Excel会关注   这些步骤:

     
      
  1. Excel会创建一个随机命名的临时文件(例如,Cedd4100   在没有文件扩展名的情况下   您指定的目标文件夹   在“另存为”对话框中。整体   工作簿写入临时   文件。
  2.   
  3. 如果要将更改保存到现有文件,Excel将删除   原始文件。
  4.   
  5. Excel重命名临时文件。 Excel提供临时文件   您指定的文件名(例如   在“另存为”对话框中显示为Book1.xls)   框。
  6.