vb.net file watch возвращает неверное имя файла - PullRequest
1 голос
/ 03 февраля 2010

Я пытаюсь использовать класс 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 ".) Ничего не могу найти в этом поиске Google или здесь, и MSDN, как обычно, мало помогает.Кто-нибудь сталкивался с этим раньше или знает, где я могу найти больше информации?

1 Ответ

1 голос
/ 03 февраля 2010

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

В итоге:

Когда Excel сохраняет файл, Excel следует эти шаги:

  1. Excel создает временный файл со случайным именем (например, Cedd4100 без расширения имени файла) в папка назначения, которую вы указали в диалоговом окне Сохранить как. Весь рабочая тетрадь пишется на временный файл.
  2. Если изменения сохраняются в существующий файл, Excel удаляет оригинальный файл.
  3. Excel переименовывает временный файл. Excel выдает временный файл имя файла, которое вы указали (например, как Book1.xls) в диалоговом окне Сохранить как коробка.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...