2016-06-21 46 views
-3

我開發了一個UDP客戶端控制檯應用程序來檢索包數據並將它們寫入文本文件。我一直在使用流將數據寫入文本文件。由於文本文件正在全天寫入,因此無法處理流。這些文件是每天生成的,我需要刪除前幾天編寫的文本文件。但不可能刪除文件;有一個錯誤消息說該文件已被另一個進程使用。雖然前一天的文件目前並未實際編寫,但它們似乎仍附在流中。由於我無法處理或關閉流,是否有可能刪除附加到特定進程的舊文本文件?謝謝。如何刪除附加到流中的文件

+0

什麼阻止你在完成寫作之後處理流? – Baldrick

+0

@Baldrick - 它與項目的整體功能有關。我正在將文本文件中的加密數據寫入並通過單獨的窗體應用程序將其解密。加密和解密過程都使用相同的加密密鑰,爲了保持過程一致,我必須保持相同的流。正如你所建議的,我試圖在一天結束時處理這個數據流,但是它通過導致破壞(解密)的數據影響了解密過程。謝謝。 – Sugandika

+1

看起來像你有一個設計問題,你試圖通過以不合適的方式做事情來解決問題。我強烈建議重新設計您的加密機制,以便您能夠正確地清理文件流。如果以這種方式鎖定文件,則窗口不會讓您刪除它。 – Baldrick

回答

1

看來你並沒有正確地處理你的流。他們在記憶中仍然「活着」。你應該弄清楚什麼讓你的數據流不被垃圾收集。例如,您可以通過在全局屬性(或更好的管理員)中保留對所有流的引用以及創建時間戳的DateTime時間戳來實現此目的。這樣,通過檢查時間戳,您可以確定哪些流可以關閉。確保你們都關閉處置你的流。

請注意,流是昂貴的資源,應將使用量保持在最低限度。

+0

Wicher Visser和Baldrick - 感謝您的支持。我必須改變使用線程的設計,並且能夠安全地處理流而不影響解密過程。 – Sugandika