雖然我確定該文件存在,但我得到一個驚喜FileNotFoundException
。IO.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
對象的引用。
這是Log
類WriteInfo
,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 solution與Refresh很簡單。從來沒有聽說過這個函數,奇怪的是,當我不刷新文件時,我得到一個FileNotFoundException。
Me.Log.LogFile.Refresh()
D是映射驅動器還是物理驅動器? – kleinohad
這是什麼類型的應用程序 - Windows服務? ASP.NET? – Yahia
'D'是一個物理驅動器,這個代碼既不能在Win2008服務器上運行,也不能在我的開發電腦上運行(Win XP)。兩者都有這種物理驅動器。這將是一個Windows服務,但到目前爲止測試的目的,它是一個只有一個開始按鈕的WinForm應用程序。 –