Una idea es ir leyendo linera por linea e incrementando un contador de bytes.
Luego, a la hora de reemplazar, usar Seek para posicionarse en el file y escribir directamente...
Habría que abrir el file 2 veces, 1 como Binary (para el seek) y el otro como Input (para los Line Input), ambos en modo shared.
Aunque no sé si cómo se comportará el abierto como Input, si el contenido del file va cambiando...
Es cuestión de probar.
Saludos!