2010-10-22 52 views
5

Trong hệ thống ghi nhật ký C# tùy chỉnh của chúng tôi, chúng tôi sử dụng streamWriter = File.CreateText(fileNameStr); để tạo tệp và mở luồng để ghi.cách tốt nhất để có kích thước tệp là gì?

Bây giờ, chúng tôi muốn theo dõi kích thước tệp để xem kích thước tệp có đạt đến kích thước tối đa được yêu cầu hay không. Những gì tôi đã làm là như sau:

  1. tạo ra một đối tượng FileInfo khoảng file: currFileInfo = new FileInfo(fileNameStr);
  2. get kích thước tập tin sau mỗi lần viết: curFileInfo.Refresh(); fileSize = curFileInfo.Length;
  3. so sánh kích thước tập tin với kích thước tập tin tối đa, nếu lớn hơn, đóng hiện tại và tạo một tệp mới.

Tôi đã in ra để xem mất bao lâu để làm mới FileInfo, nhiều lần sẽ mất khoảng 15msec.

Vì vậy, tôi nghĩ có thể có cách tốt hơn để thực hiện việc này. đề nghị của bạn là gì?

+2

Hầu hết khung công tác ghi nhật ký phổ biến đều hỗ trợ chức năng này trong hộp, thích hợp hơn khi tự mình viết IMO. – Jamiec

Trả lời

6

này nên làm việc:

streamWriter.BaseStream.Position; 

này nên chứa các vị trí hiện tại của con suối và nếu bạn đang sử dụng nó cho chỉ phụ thêm, điều này sẽ bao gồm các kích thước tập tin chính xác.

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

+1 Ý tưởng hay, nhưng bạn nên đề cập đến mã này và cách thực hiện. Nó khác với cách tiếp cận của 5yrs ở chỗ nó tạo ra một màn hình sẽ kích hoạt các sự kiện. Vì vậy, cách tiếp cận ở đây là sự kiện thúc đẩy trái ngược với một hệ thống bỏ phiếu mà OP đã bắt đầu. –

Các vấn đề liên quan