2014-05-23 50 views
1

下面一行使我能夠訪問我的結果文件:不可訪問的文件

// Write the string to a file. 
public System.IO.StreamWriter file = new System.IO.StreamWriter 
("C:\\TestDev\\Visual Stidio 2012 Developments\\Training\\Project 
1\\HSMTESTClient_03\\HSMTESTClient\\Results\\Results.txt"); 

之後,我利用以下寫信給我的文件:

 file.WriteLine(" TX: " + message + "\r\n"); 

一切都OK。然而,在這個開發(加密/解密程序)中,我設法嵌入了另一個名爲SafeNetAdaptor的項目。所有試圖寫入我的結果文件的嘗試都失敗了。在這個非常複雜的過程中,我需要能夠記錄各種操作的結果。 爲了與調試搭配,我準備爲該部分創建不同的結果文件 - 但是,儘管創建了該文件,但沒有結果寫入該文件。這是爲什麼? 感謝您的協助&的考慮。

+2

'StreamWriter'緩衝一些數據,並且只能確保在調用Flush或處理StreamWriter時,所有數據都已寫入文件(考慮使用'using'語句)。您也可以考慮在啓用「AutoFlush」的情況下寫入「Trace」。 –

+0

爲遲到的答覆道歉並感謝您的評論Nico。 – Kishor

回答

1

不是一個好主意:)

考慮使用日誌框架。周圍有很多。例子是

+0

謝謝Stefano - 將在適當的時候進行調查。 – Kishor

0
public System.IO.StreamWriter file 

只是尖叫 「BAD」 給我。

通過公共字段共享對文件的訪問權限?餿主意。你想提供封裝。您理想地想要提供處置語義。你需要處理緩衝。你想獨立於實際的實現 - 而不是公開的StreamWriter,公開一個日誌記錄類(正如Stefano寫道的,你通常會使用一個現成的日誌記錄框架)。

StreamWriter需要手動沖洗,它不會盡快寫入。即使刷新StreamWriter也不能保證什麼,因爲它仍然可以在寫入緩衝區 - I/O操作幾乎不會直接對設備進行。另外,在每次登錄嘗試後進行刷新都會使你的性能受到影響 - 這不太好,因爲日誌記錄對性能的影響應儘可能小。

當你完成後,不要忘記正確關閉文件。理想情況下,如果只處理記錄爲子操作,則只需將整個事情的using

using (var file = File.CreateText("results.txt")) 
{ 
    var log = new MyLoggingManager(file); 

    DoStuff(log); 
} 

還有噸,可出現其它問題,文件共享,權限,併發連接以及更多相關。只需使用日誌框架:)

+0

對於最近的回覆道歉並感謝您的評論Luaan。是的,我同意你關於數據寫入的意見,注意到隨機日誌。 – Kishor