Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: WINNER123 en 31 Agosto 2013, 22:54 pm



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!