Foro de elhacker.net

Programación => Java => Mensaje iniciado por: danielo- en 4 Noviembre 2009, 18:35 pm



Título: [SOLUCIONADO]listar directorios utilizando hilos
Publicado por: danielo- en 4 Noviembre 2009, 18:35 pm
De  nuez por aki, y como siempre preocupado porque no me sale el maldito codigo, espero puedan ayudarme, necesito listar un directorio, ya lo hago, pero cuando se trata de un directorio muy grande se tada mucho como era de esoerarse, entonces el profe nos recomendo utilizar hilos en el listado, pero ya intente de todo y nomas no me sale, porfa ayuda!!!, aki les dejo el codigo:

import java.awt.List;
import java.io.File;
import java.awt.List;
import java.util.Vector;

class Lista{
File [] lista;
List lArchivos,lPaths,lEnvio;
String dArchivos[],dPaths[],dEnvio[];
   
String [] path;
String [] list;
List ml,ml2;
Vector vc;
   
   public Lista(){
      lArchivos=new List();
      lPaths=new List();
      lEnvio=new List();
   }
   
   public Lista(List l,Vector x){
      vc=x;
      ml=l;
      ml2=new List();
   }
// aki empieza lo bueno   
   public void listar(File f){
      File [] lista=f.listFiles();
      
      for(int x=0;x<lista.length;x++){
         try{
         if(!lista
  • .isDirectory()){
            lArchivos.add(lista
  • .getName());
            lPaths.add(lista
  • .getAbsolutePath());
            lEnvio.add((lista
  • .length()+"b:"+lista
  • .getName()));
            System.out.println(lista
  • .length()+"b:"+lista
  • .getName());
         }
         
         if(lista
  • .isDirectory()){
            listar(lista
  • );
         }
         }
         catch(Exception e){
            System.out.println("exception 4");
         }
      }
               //hasta aki
      dArchivos=lArchivos.getItems();
      dPaths=lPaths.getItems();
      dEnvio=lEnvio.getItems();
   }
}


Título: Re: listar directorios utilizando hilos
Publicado por: kinos en 4 Noviembre 2009, 22:29 pm
En esta parte:

// aki empieza lo bueno   
   public void listar(File f){
      File [] lista=f.listFiles();
     
creo que no te puedes librar de hacer "f.listFiles()" y utilizar una forma con multihilo (si hay no la sé).
Lo que sí puedes hacer es a partir de este punto emplear un hilo para listar recursivamente cada directorio. :huh: Bufff no se como podrías ir guardando la información de cada hilo... y muchos hilos no creo que sea bueno.


Título: Re: listar directorios utilizando hilos
Publicado por: Leyer en 5 Noviembre 2009, 00:19 am
asi lo hice usando un hilo creo mas rapido y compacto imposible ::)
Código
  1. import java.io.File;
  2. import java.util.ArrayList;
  3. /*
  4.  * @author L-EYER
  5.  */
  6. public class listFiles extends Thread{
  7. private File file = null;
  8. private ArrayList<File> arrayListFiles     = new ArrayList<File>();
  9. private ArrayList<File> arrayListDir       = new ArrayList<File>();
  10. private ArrayList<File> arrayListFilesHiden= new ArrayList<File>();
  11. int size = 0;
  12. private File[]         list        = null;
  13. public listFiles(String path){
  14. super(":");
  15. setPriority(MAX_PRIORITY);
  16. file = new File(path);
  17. }
  18. @Override
  19. public void run() {
  20. list = file.listFiles();
  21. size = list.length;
  22. for(int index=0;index<size;index++){
  23.      if(list[index].isFile()){     arrayListFiles     .add(list[index]);
  24. }else if(list[index].isDirectory()){arrayListDir       .add(list[index]);
  25. }else if(list[index].isHidden()){   arrayListFilesHiden.add(list[index]);
  26. }
  27. }
  28. System.out.println("- [Directorios] -");
  29. System.out.println(arrayListDir);
  30. System.out.println("\n");
  31. System.out.println("-  [Archivos]   -");
  32. System.out.println(arrayListFiles);
  33. }
  34. public ArrayList<File> getArrayListFiles() {
  35. return arrayListFiles;
  36. }
  37. public void setArrayListFiles(ArrayList<File> arrayListFiles) {
  38. this.arrayListFiles = arrayListFiles;
  39. }
  40. public ArrayList<File> getArrayListDir() {
  41. return arrayListDir;
  42. }
  43. public void setArrayListDir(ArrayList<File> arrayListDir) {
  44. this.arrayListDir = arrayListDir;
  45. }
  46. }
  47. class mainClass{
  48. public static void main(String[] args){
  49. String path = "C:\\WINDOWS\\System32";
  50. if(new File(path).exists()){
  51. listFiles listfiles = new listFiles(path);
  52. listfiles.start();
  53. }
  54. }
  55. }
  56.  

Saludos gente.


Título: Re: listar directorios utilizando hilos
Publicado por: Leyer en 5 Noviembre 2009, 00:45 am
no se como cuantos archivos quieres listar pero mi metodo lista el system32 en menos de 2 sg :rolleyes:



Título: Re: listar directorios utilizando hilos
Publicado por: cyberserver en 5 Diciembre 2009, 06:36 am
otro codigo
Código:
File dir = new File("C:\\Users\\Los_flais\\Documents");
    String[] ficheros = dir.list();
    if (ficheros == null)
  System.out.println("No hay ficheros en el directorio especificado");
else {
  for (int x=0;x<ficheros.length;x++)
    JOptionPane.showMessageDialog(null,ficheros[x]);
}

sta padre pero no es lo que busco, pues solo me muestra los archivos que estan sobre la ruta que yo di mas no los que estan dentro de las subcarpetas.... el codigo que viene aii es casi igual al que puse en este tema!!!

Si alguien me puede ayudar con esto seria fantastico
Lo que intento hacer es como un tree


Título: Re: listar directorios utilizando hilos
Publicado por: 1mpuls0 en 5 Diciembre 2009, 07:10 am
otro codigo
Código:
File dir = new File("C:\\Users\\Los_flais\\Documents");
    String[] ficheros = dir.list();
    if (ficheros == null)
  System.out.println("No hay ficheros en el directorio especificado");
else {
  for (int x=0;x<ficheros.length;x++)
    JOptionPane.showMessageDialog(null,ficheros[x]);
}

sta padre pero no es lo que busco, pues solo me muestra los archivos que estan sobre la ruta que yo di mas no los que estan dentro de las subcarpetas.... el codigo que viene aii es casi igual al que puse en este tema!!!

Si alguien me puede ayudar con esto seria fantastico
Lo que intento hacer es como un tree

Casi igual de donde??  :xD

Cómo???, por que dices que no te sirve?  :xD, si te lista los subdirectorios
Utiliza tu imaginación :xD :xD

Saludos


Título: Re: listar directorios utilizando hilos
Publicado por: cyberserver en 5 Diciembre 2009, 07:21 am
La accion de los codigos es similar...... no me referia a tamaño o sintaxis  :rolleyes:


Pues si se podia usar la imaginacion usando recursividad pero es un trabajo muy laborioso es por ello que busco otras soluciones .

Pero pues seguire buscando suerte!!!


Título: Re: listar directorios utilizando hilos
Publicado por: cyberserver en 5 Diciembre 2009, 09:26 am
lo encontre por aii no eran tan dificil si lo analizamosss eaea

Código:

import java.io.File;


public class ListarDirectorioRecursivamente {

       
        public static void listarDirectorio(File f, String separador){
                File[] ficheros = f.listFiles();
                               
                for (int x=0;x<ficheros.length;x++){                   
                        System.out.println(separador + ficheros[x].getName());
                       
                        if (ficheros[x].isDirectory()){
                                String nuevo_separador;
                                nuevo_separador = separador + " ";
                                listarDirectorio(ficheros[x],nuevo_separador);
                        }
                }     
        }
       
       
        public static void main(String[] args) {
               
                String sDirectorio = "c:\\windows";
                File directorio = new File(sDirectorio);
               
                listarDirectorio(directorio,"");

        }

}