Member 13242613 Ответов: 2

Значение типа 'filestream' не может быть преобразовано в 'string'.


У меня здесь есть некоторый код для FileSystemWatcher1_Changed.


Private Sub FileSystemWatcher1_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) Handles FileSystemWatcher1.Changed
        Dim path As FileStream = Nothing
        Try

            path = File.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None)
            path.Close()
        Catch ex As Exception

            Dim sample As String
            sample = md5_hash(path)


            Using f As System.IO.FileStream = System.IO.File.OpenRead("viruslist.txt")
                Using s As System.IO.StreamReader = New System.IO.StreamReader(f)
                    While Not s.EndOfStream
                        Dim line As String = s.ReadLine

                        If (line = sample) Then
                            Detect.ShowDialog()
                        End If
                    End While
                End Using
            End Using
        End Try
    End Sub



В очереди
sample = md5_hash(path)
, 'path' говорит о том, что тип значения 'FileStream' не может быть преобразован в 'String'.


Есть ли какой-нибудь способ исправить это?

Что я уже пробовал:

Исследуя эту проблему.


Объявление 'path' в виде массива (по какой-то причине я подумал, что это может что-то сделать.)

2 Ответов

Рейтинг:
1

OriginalGriff

Вернитесь к вашему предыдущему вопросу: Есть ли способ назначить путь к файлу переменной при его открытии без использования openfiledialog?[^] и прочитал ответ.
Затем посмотрите на свой код и начните думать. В настоящий момент вы гадаете, что делать - и это не жизнеспособная стратегия развития.
Посмотрите на код, который вы нам показываете! Он даже не будет компилироваться по стольким причинам, что это становится глупо :смейтесь:

И что же заставляет вас предполагать, что - даже если этот код чудесным образом начал работать - все файлы, которые изменяются, будут содержать текстовые данные (то есть данные, которые поместятся в строку)? Очень мало данных на компьютере-это текст: только то, что читается человеком. Таким образом, ваш метод MD5 (который в любом случае не рекомендуется для новых проектов и не был таковым уже полдюжины лет) не должен ожидать строку, он должен ожидать массив байтов.

Серьезно: перестань гадать, начни думать. Это не сложный код, но вы делаете все возможное, чтобы сделать его как можно более сложным!


Рейтинг:
0

User 7429338

FileSystemWatcher1_Changed предоставляет вам путь: параметр e иметь тип FileSystemEventArgs который имеет свойство FullPath.

Так:

path = e.FullPath