Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado 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!
-
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?
-
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
-
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.
-
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
-
¡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