2010-10-22 59 views
5

在我們定製的C#日誌記錄系統中,我們使用streamWriter = File.CreateText(fileNameStr);來創建一個文件並打開一個用於寫入的流。什麼是獲取文件大小的好方法?

現在我們要監視文件大小,以查看它是否達到最大所需大小。我所做的是以下幾點:

  1. 創建一個FileInfo對象有關文件:currFileInfo = new FileInfo(fileNameStr);每次寫操作之後
  2. GET文件大小:curFileInfo.Refresh(); fileSize = curFileInfo.Length;
  3. ,比較文件的大小,最大文件大小,如果大,關閉當前一個並創建一個新文件。

我已經打印出多久才能刷新FileInfo,多次需要大約15毫秒。

所以我想這可能是一個更好的方法。你有什麼建議?

+2

大多數常用日誌記錄框架支持此功能,最好是自己寫IMO。 – Jamiec 2010-10-22 13:13:42

回答

6

這應該工作:

streamWriter.BaseStream.Position; 

這應包含流的當前位置,如果你使用它僅用於追加,這應該包含正確的文件大小。

1
FileSystemWatcher fsw=new FileSystemWatcher(filePath); 
fsw.NotifyFilter=NotifyFilters.Size; 
fsw.Filter="fileName"; 
fsw.Changed += new FileSystemEventHandler(YourHandler); 
fsw.EnableRaisingEvents = True; 
+1

+1好主意,但你應該提到這段代碼的作用和方式。這與5年前的做法不同,它創建了一個可以觸發事件的顯示器。所以這裏的方法是事件驅動的,而不是OP開始的投票系統。 – 2010-10-22 13:20:05

相關問題