Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Psyke1 en Diciembre 07, 2012, 06:35:30 am

Título: Forma más inteligente de almacenar hash de archivos
Publicado por: Psyke1 en Diciembre 07, 2012, 06:35:30 am
Tengo una carpeta donde se copio muchos archivos.

Archivos que no se pueden repetir. En caso de que hubiera dos con el mismo nombre se renombra el último añadido.
Lo que quiero hacer es poder borrarlos pero que quede un registro de los que he copiado con anterioridad. Así que pensé en:
Sacar el hash MD5 de todos los archivos y guardarlo en un txt. Entonces cada vez que quiero copiar un nuevo archivo leo el txt en busca de su hash, si no lo encuentra añade su hash y se copia, y si lo encuentra no se copia.

El problema es que al ser tanta cantidad de archivos a veces se demora demasiado.
Además para buscarlos utilizo la clase de LeandroA de cFindFiles (http://leandroascierto.com/blog/clase-para-buscar/), pero incluso indicándole que llame al DoEvents me pone el CPU al 50%. :-\

¿Se os ocurre alguna idea para agilizar todo esto? :)

¡Gracias!
Título: Re:Forma más inteligente de almacenar hash de archivos
Publicado por: LeandroA en Diciembre 07, 2012, 09:05:54 am
Hola, y si usaras una base de datos?, seguramente, seria mas rapido, buscar en ella que buscar por archivos, en la base de datos podes guardar todas las modifiaciones hash, cantidad de copias, y con un simple "select" obtenes el resultado.
supongo que intentas hacer algo asi como un deposito de archivos, ahora de cuantos estamos ablando como para que se ponga lento?
Título: Re:Forma más inteligente de almacenar hash de archivos
Publicado por: Psyke1 en Diciembre 07, 2012, 03:48:34 pm
En principio la aplicación es malware.  ::)
Pues voy a ver algún ejemplo de lo que dices porque nunca me tocó usar bases de datos en vb6. :P
¡Gracias! ;D

DoEvents! :P
Título: Re:Forma más inteligente de almacenar hash de archivos
Publicado por: LeandroA en Diciembre 07, 2012, 04:11:20 pm
mm si es un malaware entonces no seria muy conveniente usar bd, contame un poco mas en detalle de que se trata, quizás se me ocurra otra forma.
Título: Re:Forma más inteligente de almacenar hash de archivos
Publicado por: LeandroA en Diciembre 08, 2012, 04:05:29 pm
Hola mira me parece que esto te puede venir de lujo, es un modulo clase de cobein, que muestra los cambios de un directorio o unidad. (ADDED, REMOVED, MODIFIED, RENAMED_OLD_NAME, RENAMED_NEW_NAME)
creo que es el mismo metodo que utiliza el explorer para auto actualizar en la lista cuando se crea una carpeta, o los antivirus para detectar cambios etc.
la idea es que con este metodo no tenes que andar buscando los cambios, ya la clase dispara su evento

https://docs.google.com/open?id=0B68MFIa9bP-gYk5QX2ExZEc5cEE

avisame si la descarga no anda es la primera vez que uso google drive



Título: Re:Forma más inteligente de almacenar hash de archivos
Publicado por: Psyke1 en Diciembre 12, 2012, 02:58:08 pm
¡Qué buena solución LeandroA! :) Con eso me ahorras muchísimos recursos.
Ahora sólo queda solucionar el tema de comprobar si un archivo ya ha sido copiado en la carpeta. Así a ojo serán unos 10.000 en total. ¿Alguna idea con esto?

Gracias!

DoEvents! :P