Я получаю неожиданное FileNotFoundException
, хотя я уверен, что файл существует.
Я просто хотел добавить файлы журнала ( IO.FileInfo
) как вложения к электронному письму, поэтому я попытался проверить длину каждого файла, чтобы определить, должны ли они быть добавлены / заархивированы.
Это нормально работает, если эти файлы уже существуют .
Но если я создал их в этом прогоне, я получаю исключение выше, когда пытаюсь проверить длину. Как ни странно, я могу записывать в эти "несуществующие" файлы (на самом деле FileInfo.Exists
возвращает false
) без проблем за одну строчку раньше.
Вот код .. .
Создание одного из файлов в конструкторе класса с именем Log
:
Me.LogFile = New IO.FileInfo(infoLogPath)
If Not LogFile.Exists() Then
'tried to use `Using` on the Stream but that doesn't change anything'
Using stream = Me.LogFile.Create()
'close and dispose implicitely
End Using
End If
Я могу записать в файл без проблем:
Me.Log.WriteInfo("BlahBlahBlah...", False)
Через одну строку после того, как я получаю исключение на LogFile.Length
:
If Me.Log.LogFile.Length <> 0 Then
files.Add(Me.Log.LogFile)
End If
Me.Log
- это настраиваемый объект класса ведения журнала с именем Log
, который содержит ссылку на объект FileInfo
.
Это WriteInfo
в классе Log
, LogFile
- это IO.FileInfo
-onject:
Public Sub WriteInfo(ByVal message As String, ByVal finishLog As Boolean)
Try
Using w As IO.StreamWriter = Me.LogFile.AppendText
If Me.WithTimestamp Then
w.WriteLine(Date.Now.ToString(Globalization.CultureInfo.InvariantCulture) & ": " & message)
Else
w.WriteLine(message)
End If
If finishLog Then w.WriteLine("__________________________")
w.Flush()
w.Close()
End Using
Catch writeLogException As Exception
Try
WriteError(writeLogException, True)
Catch innerEx As Exception
'ignore
End Try
End Try
End Sub
Фактически @ Решение ShellShocks с Refresh было простым. Никогда не слышал об этой функции, странно, что я получаю исключение FileNotFoundException, когда не обновляю файл.
Me.Log.LogFile.Refresh()