2010-10-22 12 views
5

En nuestro sistema personalizado de registro C#, usamos streamWriter = File.CreateText(fileNameStr); para crear un archivo y abrir una secuencia para escritura.¿cuál es una buena forma de obtener el tamaño del archivo?

Ahora queremos controlar el tamaño del archivo para ver si alcanza el tamaño máximo requerido. Lo que hice es la siguiente:

  1. crear un objeto FileInfo por alrededor de archivo: currFileInfo = new FileInfo(fileNameStr);
  2. obtener el tamaño del archivo después de cada escritura: curFileInfo.Refresh(); fileSize = curFileInfo.Length;
  3. compare el tamaño de archivo con el tamaño máximo del archivo, si es grande, cierre la uno actual y crea un nuevo archivo.

He imprimido para ver cuánto tiempo llevará actualizar el FileInfo, muchas veces tomará aproximadamente 15msec.

Así que estoy pensando que puede haber una mejor manera de hacerlo. ¿cuál es tu sugerencia?

+2

La mayoría de los marcos de registro comunes son compatibles con esta funcionalidad, preferible a intentar escribirlo usted mismo IMO. – Jamiec

Respuesta

6

Esto debería funcionar:

streamWriter.BaseStream.Position; 

Este debe contener la posición actual de la corriente y si usted lo está utilizando para anexar solamente, este debe contener el tamaño de archivo correcto.

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

+1 Buena idea, pero debe mencionar lo que hace este código y cómo. Es un enfoque diferente al de 5yrs porque crea un monitor que disparará eventos. Entonces, el enfoque aquí es impulsado por eventos en oposición a un sistema de votación con el que comenzó el OP. –

Cuestiones relacionadas