Título: Reescribir un segmento de un archivo Publicado por: WINNER123 en 31 Agosto 2013, 22:54 pm Supongamos que tengo un archivo con el siguiente contenido:
COMO YO ESCRIBO ESTO EN UN ARCHIVO Ahora lo que quiero hacer es buscar y reemplazar ESCRIBO por REESCRIBO y que el archivo quede guardado con el cambio hecho NOTA: ES IMPRESCINDIBLE NO CARGAR TODO EL CONTENIDO DEL ARCHIVO EN MEMORIA Gracias a todos los que puedan aportar algún tipo de ayuda Título: Re: Reescribir un segmento de un archivo Publicado por: 79137913 en 1 Septiembre 2013, 02:27 am HOLA!!!
Podes leer de a buffers de por ejemplo 1Kb ver si esta tu frase y guardar con append en el archivo, luego reescribis el buffer con el proximo segmento del archivo y asi. GRACIAS POR LEER!!! Título: Re: Reescribir un segmento de un archivo Publicado por: WINNER123 en 1 Septiembre 2013, 07:24 am HOLA!!! Podes leer de a buffers de por ejemplo 1Kb ver si esta tu frase y guardar con append en el archivo, luego reescribis el buffer con el proximo segmento del archivo y asi. GRACIAS POR LEER!!! El problema es que este es el único metodo para leer un archivo que tengo y es por lineas Public Function FileRead(ByVal FullPathFile As String) As String Dim intArch As Integer Dim strText As String intArch = FreeFile Open FullPathFile For Input As #intArch Do While Not EOF(intArch) Line Input #intArch, strText strText = strText & vbCrLf FileRead = FileRead & strText Loop End Function Asi que si el archivo es muy grande, consume muchos recursos y al salvar con append, este escribe al final del archivo, por lo cual no puedo escribir algo que esta en el medio a menos que salve todo desde donde se hizo la modificación hasta el final y volveria a caer en el alto consumo de recursos. Saludos y Gracias por la ayuda Título: Re: Reescribir un segmento de un archivo Publicado por: 79137913 en 1 Septiembre 2013, 16:41 pm HOLA!!!
Fijate en el loop que tenes ahi... dentro de ese loop tenes que hacer que se escriba strText en un archivo cualquiera, por ejemplo en temp, quitas la linea FileRead = FileRead & strText y listo. Solo tendrias que hacer un replace en strText por lo que quieras reemplazar, luego reemplazar el archivo que tenias por el de temp y voila! GRACIAS POR LEER!!! Título: Re: Reescribir un segmento de un archivo Publicado por: MCKSys Argentina en 2 Septiembre 2013, 17:57 pm 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. ;D Saludos! |