In our customized C# logging system, we use streamWriter = File.CreateText(fileNameStr);
to create a file and open a stream for write.
Now we want to monitor the file size to see if it reach the max required size. What I did is the following:
- create a FileInfo object for about file:
currFileInfo = new FileInfo(fileNameStr);
- get file size after each write:
curFileInfo.Refresh(); fileSize = curFileInfo.Length;
- compare the file size with max file size, if bigger, close the current one and create a new file.
I have print out to see how long it will take to refresh the FileInfo, many times it will take about 15msec.
So I am thinking there may be a better way to do this. what's your suggestion开发者_JS百科?
This should work:
streamWriter.BaseStream.Position;
This should contain the current position of the stream and if you're using it for appending only, this should contain the correct file size.
FileSystemWatcher fsw=new FileSystemWatcher(filePath);
fsw.NotifyFilter=NotifyFilters.Size;
fsw.Filter="fileName";
fsw.Changed += new FileSystemEventHandler(YourHandler);
fsw.EnableRaisingEvents = True;
精彩评论