Foro de elhacker.net

Programación => Java => Mensaje iniciado por: egyware en 29 Agosto 2007, 20:43 pm



Título: Buscar archivos con java
Publicado por: egyware en 29 Agosto 2007, 20:43 pm
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
  1. /*con esto me devuelve una lista archivos "/","/root","/boot","c:\","a:\",...*/
  2. java.io.File.listRoots();
  3. File file;
  4. file.listFiles() ; //me devuelve una lista de archivos en el dir actual
  5. //con los datos obtenidos los comparo con el archivo a buscar
  6.  
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


Título: Re: Buscar archivos con java
Publicado por: Ragnarok en 29 Agosto 2007, 21:36 pm
¿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
  1. for (File f: java.io.File.listRoots())
  2.  if(f.isDirectory())
  3.      this.findIn(f);
  4.  else
  5.    // lo que hagas con los archivos normales, probablemente sobre esta posibilidad
  6.  
  7. /* .... */
  8. Retorno findIn(File file){
  9.  for (File f: file.listFiles())
  10.  if(f.isDirectory())
  11.      this.findIn(f);
  12.  else
  13.    // lo que hagas con los archivos normales


Título: Re: Buscar archivos con java
Publicado por: egyware en 30 Agosto 2007, 18:33 pm
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?


Título: Re: Buscar archivos con java
Publicado por: Ragnarok en 30 Agosto 2007, 19:00 pm
¿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.


Título: Re: Buscar archivos con java
Publicado por: egyware en 31 Agosto 2007, 16:05 pm
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


Título: Re: Buscar archivos con java
Publicado por: Ragnarok en 31 Agosto 2007, 18:33 pm
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.


Título: Re: Buscar archivos con java
Publicado por: egyware en 31 Agosto 2007, 19:33 pm
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