Buscar archivos con java

Iniciado por egyware, 29 Agosto 2007, 20:43 PM

0 Miembros y 1 Visitante están viendo este tema.

egyware

Busque a la rapida en este foro y en Google sobre como buscar archivos (asi que no me reten o si no me pongo triste :-() mi pregunta es como buscar archivos con java, por mas que lo pienso y si lo escribo crearia un bucle interminable haciendo fallar mi app, hasta el momento no se me ocurre nada concreto pero tengo una idea:
Obtener lista de archivos
Código (java) [Seleccionar]

/*con esto me devuelve una lista archivos "/","/root","/boot","c:\","a:\",...*/
java.io.File.listRoots();
File file;
file.listFiles() ; //me devuelve una lista de archivos en el dir actual
//con los datos obtenidos los comparo con el archivo a buscar

http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html

como dato curioso mientras escribia este post se me ocurrio ver si era factible crear una busqueda con Listas y Nodos, talvez me funcione, no se mucho de eso pero encontre un ejemplo por ahi bastante bueno que me podia servir, Si porfin se me ilumnina la mente escribo mi codigo aqui
xau

Ragnarok

¿Cuál es la duda?

Si estás buscando en el directorio actual lo más fácil es utilizar los métodos que te filtran nombres, están justo a continuación del que pones.

Si lo que quieres es buscar en todo el ordenador puedes hacer lo siguiente (es orientativo):

Código (java) [Seleccionar]
for (File f: java.io.File.listRoots())
  if(f.isDirectory())
      this.findIn(f);
  else
    // lo que hagas con los archivos normales, probablemente sobre esta posibilidad

/* .... */
Retorno findIn(File file){
  for (File f: file.listFiles())
  if(f.isDirectory())
      this.findIn(f);
  else
    // lo que hagas con los archivos normales
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

egyware

creo que me equivoque pense que este post no se habia subido, pero no importa mi duda es crear un algoritmo de busqueda de arhivos, igual llevo algo planeado como usar el algoritmo de busqueda binaria o algo asi?? :P
Mi duda es explicitamente: ¿Como creo un algoritmo de busqueda de archivos?

Ragnarok

¿los archivos tienen alguna característica que puedas aprovechar para hacer tu búsqueda más eficiente?

El algoritmo que te propongo es el de búsqueda en profundidad.

El cualquier caso, si la duda es de algorítmica y no de java deberías preguntarlo en programación general.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

egyware

no no es sobre algoritmos, es como implementar uno en Java para buscar archivos, aun no lo hecho pero lei que puedo usar el de busqueda binaria como por ejemplo leo todos los archivos del directorio actual y luego con el archivo a buscar hago una IgnoreCaseCompare y enpiezo a comparar y eso me devuelve un numero donde ahi entra binary search porque las String implementan Comparable  y puedo ordenarlas, eso es mi idea xau

Ragnarok

Entonces al coste de tu algoritmo de búsqueda tienes que sumarle el de ordenación...

Además eso sólo te sirve para buscar en un directorio, si es lo que quieres ya lo tienes, aunque los métodos que te he mencionado antes serían mejores. El algoritmo que te he dicho es para buscar en un árbol de directorios, y a menos que tenga alguna propiedad, como ser un trie, no veo de qué forma puedes optimizar la búsqueda.

En cualquier caso, si la duda es de java, la forma de hacerlo es principalmente con los métodos que empiezan por list en el enlace que has puesto.
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

egyware

mmmm, bueno en que en realidad ese metodo se me ocurrio el algoritmo de profundizacion no lo se, y el de busqueda binaria lo encontre en un libro en ingles de java y cuando lo lei se me ilumino la mente(osea se me ocurrio una idea), pero si tu me dices que es mejor ese lo voy a buscar y encontrar una forma de implementarlo, gracias :huh:
lo busco y lo posteo aqui por si alguien le interesa tb