C/Visual C - Buscar un archivo en toda una unidad.

 
Vista:

Buscar un archivo en toda una unidad.

Publicado por Javier Irriaga (1 intervención) el 13/08/2005 05:01:19
Debo crear un programa en C que busque un archivo en todos los directorios y subdirectorios de una unidad lógica determinada. Hasta ahora lo más que he logrado es utilizar unas funciones de la librería <dir.h> como en el siguiente ejemplo:

#include <stdio.h>
#include <dir.h>

int main(void)
{
struct ffblk *pbloquefindfirst;
int yalohice=0;
printf("Lista de archivos del directorio actual: *.*\n");
yalohice = findfirst("*.*", pbloquefindfirst, 0);
while (!yalohice)
{
printf(" %s\n", pbloquefindfirst->ff_name);
yalohice = findnext(pbloquefindfirst);
}

return 0;
}

Pero OJO, sólo puedo recuperar los archivos del directorio actual, más no las entradas del directorio padre e hijo, osea "." y "..", y no sé cómo recuperar los directorios siguientes dentro del directorio en donde empiezo mi búsqueda. Porque si me los regresa con un chdir podría cambiar al siguiente directorio y ejecutar el código anterior.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Buscar un archivo en toda una unidad.

Publicado por Fernando (18 intervenciones) el 13/08/2005 17:35:52
Alguna vez que tuve que buscar archivos por el disco, yo use directamente las funciones del Api FindFirstFile, y FindNextFile, ambas devuelven una estructura de datos del tipo WIN32_FIND_DATA que tiene varios datos referente a los archivos que encuentra.

Uno de los datos devueltos, es que tipo de archivo es, por que esta funcion considera archivo a una carpeta, con lo cual deberías hacer un bucle, que recorra el directorio raiz, y a partir de ahi, almacenar todas las entradas que devuelva como carpeta, en un array aparte, y luego los recorres uno a uno. . . vamos, que esto es recursividad a tope!!

Si quieres, escribeme a mi correo que veo si tengo alguno de esos archivos para enviartelos, pero de todas formas te aconsejo que te mires algo de las ayuda del MSDN, si es que lo tienes, por que esta bastante bien, sobre todo en lo que se refiere al uso de la estructura WIN32_FIND_DATA.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Buscar un archivo en toda una unidad.

Publicado por FAKTOR-Q (4 intervenciones) el 13/09/2005 00:16:46
hola javier, yo estoy en un proyecto personal muy parecido al tuyo, lo ke yo kiero hacer basicamente es programar un buscador de archivos, si puede ser para todos los tipos de sistemas de archivos (fat32, ntfs, ext2, ext3). tengo 2 discos de 160gb y uno de 40gb y el buscador de xp tarda la vida, el de linux (aun usando el comando updatedb y luego find) tambien tarda mucho, por ke me da la sensacion ke ese comando no agrega en su "base" los archivos de particiones montadas con otros sistemas de archivos, o sea, fat 32 y/o ntfs.
bueno, el algoritmo de buskeda mas o menos ya lo tengo pensado, el lenguaje en ke kiero hacerlo es en c usando el compilador borland c++. el tema es ke para eso necesito saber como listar todos los archivos en todas las carpetas y en todos los subdirectorios. veo ke es el problema ke tenes vos. aparte de c, no nos convendria hacer algo en ASM? yo no se programar en ASM, puedo aprender, pero la idea para empezar esto es, por lo pronto, revisar tu codigo de manera ke liste todos lo archivos en todos los subdirectorios y en todas las unidades.
si te interesa escribime. yo voy a ver ke puedo hacer con tu codigo. salu2!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar