style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

POR FAVOR AYUDA BUSQUEDA DE ARCHIVOS

hola quiero ver si me podrian ayudar a realizar busqueda de archivos desde JFrame , busqueda por nombre, por extension
lo que pasa que tengo un proyecto que entregar donde la aplicacion debe mostrar las propiedades del sistema y ademas debe buscar archivos hasta el momento eh logrado que se visualice la informacion del sistema pero no se como para buscar archivos en el sistema si me pudieran ayudar me seria de gran ayuda

//hasta el momento solo visualiza la informacion del sistema que haria para realizar la busqueda de archivos
//las librerias que utilizo son substance.jar es para decorar mi Frame
//inicio importando librerias

import javax.swing.JFrame;
import org.jvnet.substance.SubstanceDefaultLookAndFeel;
import org.jvnet.substance.watermark.SubstanceImageWatermark;
import org.jvnet.substance.button.StandardButtonShaper;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import javax.swing.filechooser.FileSystemView;

//fin

//inicio de la clase InfoSistema
public class InfoSistema extends JFrame
 {        //Atributos
           String vacio="";
           Container Contenedor = getContentPane();
           int i=0,y=30,c=0,a=0,b,z=0,aux=0,x=0,w=0,lim,sis=0;
           String vector[]=new String [46];
           JLabel etiquetas[]=new JLabel[54];
           JLabel unidades[]=new JLabel[20];
           JTextArea process = new JTextArea();
          JScrollPane cuadro = new JScrollPane();
         //Fin de Atributos

//Inicio metodo Constructor
  public InfoSistema()
    {

super("Access System");
   
       
getInformacion();//obtiene informacion del sistema desde systeminfo.exe

// establecer menú Sistema y sus elementos de menú
      JMenu menuSistema = new JMenu( "Sistema" );
       menuSistema.setMnemonic( 'S' );//subraya letra
       
          // crear barra de menús y adjuntarla a la ventana InfoSistema
      JMenuBar barra = new JMenuBar();  
      setJMenuBar( barra );  
      barra.add( menuSistema );
 
       
       // establecer elemento Propiedades del Sistema al menu Sistema
     
//Inicio elementoPropiedades

JMenuItem elementoPropiedades = new JMenuItem( "Informacion del Sistema" );
      elementoPropiedades.setMnemonic( 'P' );//subraya letra
      menuSistema.add( elementoPropiedades );
      elementoPropiedades.addActionListener(new ActionListener (){
      public void actionPerformed (ActionEvent evento)
      {
         
        i=0;
     Reset();
       
        c++;
        i=0;
        y=40;
       
      Contenedor.setLayout(null);
      //establecer etiqueta para mostrar texto
     
      do
      {
        etiquetas[i]=new JLabel(vector[i]);
        etiquetas[i].setFont( new Font( "Serif", Font.PLAIN, 15 ) );
        setVisible( true );
        etiquetas[i].setHorizontalAlignment(SwingConstants.CENTER);
        Contenedor.add(etiquetas[i]);
        etiquetas[i].setBounds(110, y, 700, 20);
        y=y+40;
        i++;
        if(i==15)
        {
                b=18;
                do
                {
                etiquetas[b]=new JLabel(vector[b]);
                etiquetas[b].setFont( new Font( "Serif", Font.PLAIN, 15 ) );
                setVisible( true );
                etiquetas[b].setHorizontalAlignment(SwingConstants.CENTER);
                Contenedor.add(etiquetas[b]);
                etiquetas[b].setBounds(110, y, 700, 20);
                y=y+40;
                b++;   
                }while(b<=23);
        }
      }while(i<=14);
       
     
     
     
   }   
      });

// Fin elementoPropiedades

// Inicio elementoProcesador

      JMenuItem elementoProcesador = new JMenuItem( "Informacion del Procesador" );
      elementoProcesador.setMnemonic( 'I' );//subraya letra
      menuSistema.add( elementoProcesador );
      elementoProcesador.addActionListener(new ActionListener ()
      {
      public void actionPerformed (ActionEvent evento)
      {
        i=0;
       Reset();//llama al metodo Reset que oculta las etiquetas actuales y visualice las nuevas
        a++;
       
       
        i=15;//empieza desde i=15 porque desde la linea 15 hasta la 17 se encuentra la informacion del sistema
        y=40;
       
      Contenedor.setLayout(null);
      //ciclo que establece etiquetas para mostrar informacion del procesador
       do
      {
        etiquetas[i]=new JLabel(vector[i]);
        etiquetas[i].setFont( new Font( "Serif", Font.PLAIN, 15 ) );
        setVisible( true );
        etiquetas[i].setHorizontalAlignment(SwingConstants.CENTER);
        Contenedor.add(etiquetas[i]);
        etiquetas[i].setBounds(110, y, 700, 20);
        y=y+40;
        i++;
       
       
      }while(i<=17);
     
     
      }
      }
      );

// fin elementoProcesador

// Inicio elementoSArchivo

      JMenuItem elementoSArchivo = new JMenuItem( "Informacion Unidades del Sistema" );
      elementoSArchivo.setMnemonic( 'I' );//subraya letra
      menuSistema.add( elementoSArchivo );
      elementoSArchivo.addActionListener(new ActionListener(){
       
     
        public void actionPerformed (ActionEvent evento)
        {
                i=0;
      Reset();//llama al metodo Reset que oculta las etiquetas actuales y visualice las nuevas
               
       
        int cont=0;
        String Nombre[]=new String [20];
        String Descripcion[]=new String [20];
      List <File>files = Arrays.asList(File.listRoots());
      for (File f : files)
      {
        Nombre[cont] = FileSystemView.getFileSystemView().getSystemDisplayName (f);
        Descripcion[cont] = FileSystemView.getFileSystemView().getSystemTypeDescription(f);
        if(Nombre[cont].equals(vacio))//por si se tienen unidades virtuales sin nombre reconocidos como discos extraibles
        {
               
        }
       
        else
        {
        cont++;
        }
       
      }
      lim=cont-1;
     
      cont=0;
      int largo;
      y=10;
      Contenedor.setLayout(null);
      //ciclo que añade las etiquetas donde se visualizan las unidades del sistema
       do
      {
       
        unidades[cont]=new JLabel(Nombre[cont]+": \t"+Descripcion[cont]);
        unidades[cont].setFont( new Font( "Serif", Font.PLAIN, 15 ) );
        setVisible( true );
        unidades[cont].setHorizontalAlignment(SwingConstants.CENTER);
        Contenedor.add(unidades[cont]);
        unidades[cont].setBounds(110, y, 700, 20);
       
        y=y+40;
        cont++;
       
       
      }while(cont<=lim);
     
      sis++;
     
     
        }
      });

// fin elementoSArchivo

// Inicio elementoMemoria
     
      JMenuItem elementoMemoria = new JMenuItem( "Informacion de la Memoria" );
      elementoMemoria.setMnemonic( 'I' );//subraya letra
      menuSistema.add( elementoMemoria );
      elementoMemoria.addActionListener(new ActionListener (){
        public void actionPerformed (ActionEvent evento)
        {
       
        i=0;
        aux=0;
        getInformacion();//llama al metodo obtener informacion del sistema que abre Systeminfo.exe
       
               
               
     
          i=0;
        Reset();//llama al metodo Reset que oculta las etiquetas actuales y visualice las nuevas
       
       
        z++;
        i=24;
        y=40;
       
      Contenedor.setLayout(null);
      //establecer etiqueta para mostrar texto
     
      do
      {
        etiquetas[i]=new JLabel(vector[i]);
        etiquetas[i].setFont( new Font( "Serif", Font.PLAIN, 15 ) );
        setVisible( true );
        etiquetas[i].setHorizontalAlignment(SwingConstants.CENTER);
        Contenedor.add(etiquetas[i]);
        etiquetas[i].setBounds(190, y, 300, 20);
        y=y+40;
        i++;
      }while(i<=28);
     
     
      }
       
      });

// fin elementoMemoria

// Inicio elementoProcesos

// establecer elemento Procesos actuales al menu Sistema
      JMenuItem elementoProcesos = new JMenuItem( "Procesos Actuales" );
      elementoProcesos.setMnemonic( 'P' );//subraya letra
      menuSistema.add( elementoProcesos );
      elementoProcesos.addActionListener(new ActionListener() {
        public void actionPerformed (ActionEvent evento)
        {  
               
                i=0;
            Reset();//llama al metodo Reset que oculta las etiquetas actuales y visualice las nuevas
            w++;
                     
     
       
       
                        int h=0;
        try{

            String v[]= new String [100];
            String str_proceso="";
            String admin =System.getenv("windir") + "\\system32\\"+ "tasklist.exe";
            Process proceso =Runtime.getRuntime().exec(admin);
            BufferedReader input = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
            while((v[h] = input.readLine()) != null)
            {
            //va concatenando los procesos actuales linea por linea al final de cada linea da un salto
                       
                str_proceso=str_proceso+v[h]+"\n"; h++;
               
            }

            input.close();
           
         process = new JTextArea( 90, 6 );
         process.setEditable( false );
         process.setLineWrap(true);
         cuadro = new JScrollPane(process);
         setVisible( true );
         cuadro.setBounds(170, 40, 600, 830);
         Contenedor.add(cuadro);
             
         process.setText(str_proceso);
         
       
          }catch(Exception e){
            e.printStackTrace();
        }
     
     }
      });

// fin elementoProcesos

// Inicio elementoAcerca
 
     
      // establecer elemento de menú Acerca de...
      JMenuItem elementoAcerca = new JMenuItem( "Acerca de..." );
      elementoAcerca.setMnemonic( 'A' );
     menuSistema.add(elementoAcerca);
      elementoAcerca.addActionListener(

         new ActionListener() {  // clase interna anónima

            // mostrar cuadro de diálogo de mensaje cuando el usuario seleccione Acerca de...
            public void actionPerformed( ActionEvent evento )
            {      //con estoquito todo de las etiquetas
                   
                 
                   JOptionPane.showMessageDialog( InfoSistema.this,
                  "Copyright © 2010 - 2012 JALG Software \n\nCreado por:Juan Antonio Lopez Garcia ISC\n\nEste es un programa que obtiene las caracteristicas del sistema\n y tiene ademas la funcion de buscar Archivos en el sistema\n\nAll Rights Reserved",
                  "Acerca de...", JOptionPane.PLAIN_MESSAGE );
            }

         }  // fin de la clase interna anónima

      ); // fin de la llamada a addActionListener

// fin elementoAcerca

//Inicio elementoSalir
     
      //establecer elemento Salir al menu Sistema
      JMenuItem elementoSalir = new JMenuItem( "Salir" );
      elementoSalir.setMnemonic( 'S' );
      menuSistema.add( elementoSalir );
      elementoSalir.addActionListener(new ActionListener()
       {  
       // terminar la aplicación cuando el usuario haga clic en Salir
       public void actionPerformed( ActionEvent evento )
       {
        System.exit( 0 );
       }
       } );

//fin elementoSalir

//Inicio menuBarchivo
 
      // crear menú Busqueda de Archivos
      JMenu menuBarchivo = new JMenu( "Busqueda de Archivos" );
       menuBarchivo.setMnemonic( 'S' );  
      // agregar menú Busqueda de Archivos a la barra de menús
      barra.add( menuBarchivo );
//fin menuBarchivo

}//fin del metodo Constructor

 //metodo que obtiene informacion del sistema desde systeminfo.exe
 public void getInformacion()
 {
        try
        {

            String str_proceso = null;
            String admin =System.getenv("windir") + "\\system32\\"+ "systeminfo.exe";
            Process proceso =Runtime.getRuntime().exec(admin);
            BufferedReader input = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
            //como la informacion que necesito se encuentra en distintas lineas entonces necesito
            //escoger la informacion que necesito
            while((str_proceso = input.readLine()) != null)
            {
              if(i>=0&&i<=31)
                {
                        vector[aux]=str_proceso;
                        aux++;
               
                        i++;
                }
               
                if(i>=32&&i<=89)
                {
                       
                        i++; //de la linea 32  a la linea 89 hay informacion que no ocupo asi que no la guardo
                }
               
                    if(i>=90&&i<=103)
                    {
                    vector[aux]=str_proceso;
                    aux++;
                    i++;       
                    }
            }
            input.close();
           

        }catch(Exception e){
            e.printStackTrace();
        }
       
 } //Fin del metodo getInformacion()

//Inicio metodo principal

public static void main(String[] args)
    {
InfoSistema objeto = new InfoSistema();
objeto.setDefaultCloseOperation(EXIT_ON_CLOSE);
objeto.setSize(375,300);
objeto.setVisible(true);
JFrame.setDefaultLookAndFeelDecorated(true);

SubstanceDefaultLookAndFeel.setSkin("org.jvnet.substance.skin.BusinessBlackSteelSkin");
SubstanceDefaultLookAndFeel.setCurrentTheme(" org.jvnet.substance.theme.SubstanceAquaTheme");
SubstanceDefaultLookAndFeel.setCurrentWatermark(" org.jvnet.substance.watermark.SubstanceBynaryWatermark");
SubstanceDefaultLookAndFeel.setCurrentWatermark(new SubstanceImageWatermark("M:\\3.jpg"));
SubstanceDefaultLookAndFeel.setImageWatermarkOpacity(new Float(0.3));//opacidad de la imagen

//al iniciar el frame manda el mensaje de Bienvenido mas nombre de usuarion  la PC
String usuario= System.getProperty("user.name");
JOptionPane.showMessageDialog(null,"Bienvenido "+usuario);
       
 } //Fin del metodo Principal

//Inicio del metodo Reset()

//esto es para que al momento de dar clic en algun elemento del menu se borre la informacion actual que hay y aparezca la nueva
//es decir si primero di clic en el elemento Informacion de la memoria aparece la informacion y de ahi doy clic en propiedades del sistema se quite
//la informacion actual de la memoria y se visualicen las propiedades del sistema
public void Reset()
{
         if(c!=0)
        {
                do
                {
                  etiquetas[i].setVisible(false);
                  i++;
                  if(i==15)
                  {
                        b=18;
                        do
                        {
                                etiquetas[b].setVisible(false);
                                b++;
                        }while(b<=23);
                  }    
                }while(i<=14);
       
         } //fin de if
       
       
        if(a!=0)
        {
                do
                {
                  etiquetas[i].setVisible(false);
                  i++; 
                }while(i<=17);
        }
       
                i=24;
                if(z!=0)
        {
                do
                {
                  etiquetas[i].setVisible(false);
                  i++; 
                }while(i<=28);
        }
       
     
       
        if(w!=0)
        {
                process.setText(null);
                 cuadro.setVisible( false );
        }
       
                if(sis!=0)
        {   i=0;
                do
                {
                        unidades[i].setVisible(false);
                        i++;
                }while(i<=lim);
        }
}  //Fin del metodo Reset()    
       

       
        } //fin del Clase InfoSistema

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de benek

<code> y </code>

Encierra tu código entre las etiquetas para código, así como lo pusiste es un tanto ilegible.

http://www.javamexico.org/filter/tips

Saludos.

soy nuevo en el foro

soy nuevo en el foro y pues si la verdad es un tanto ilegible y como no encuentro la manera de visualizarlo de una forma mas legible pues ahora lo unico que hice fue indicar el inicio //inicio y final de cada accion //fin

Imagen de rodrigo salado anaya

Lee

Imagen de rodrigo salado anaya

Busca Archivos.

Bueno la clase File tiene un método llamado listFiles que te devuelve un arreglo de tipo String con los nombres de los archivos que contiene la ruta que le das, lo interesante de este método es que puedes usarlo con un filtro de tito Interface FilenameFilter, bueno y en dicha interfase sobre escribes el método accept, y pues aquí es donde te pones todo paranoico y creas el filtro jejeje. Este filtro dice: si es correcto lo que tu filtro entonces ponlo en el arreglo.
Mira estas ligas y busca en www.google.com para que veas más ejemplos de lo que te propongo aquí:

http://download.oracle.com/javase/6/docs/api/java/io/File.html
http://download.oracle.com/javase/6/docs/api/java/io/FilenameFilter.html

Ejemplo mini:

package org.javamexico.buscaarchivo;

import java.io.File;

/**
 * Busca Archivos por extención sin recursividad.
 */

public class Main {

    public static void main(String[] args) {
        File rutaBuscar = new File("C:\\");
        File[] listaArchivos = rutaBuscar.listFiles(new Filtro("txt"));
        for (File archivoEncontrado : listaArchivos) {
            System.out.println("Archivo encontrado: " + archivoEncontrado.getName() + "");
       }
    }
}

Y

package org.javamexico.buscaarchivo;

import java.io.File;
import java.io.FilenameFilter;

public class Filtro implements FilenameFilter {

    private String extension;

    public Filtro(String extension) {
        this.extension = extension;
    }

    public boolean accept(File dir, String name) {
        return name.endsWith("." + extension);
    }
}

Enserio lee los tips : D, suerte y cualquier duda echa un comentario sale.... y cuando termines esta parte de tu proyecto, pon aquí como te quedo por favor, es algo feo pero no obligatorio que no exista una retroalimentación jejeje bueno suerte a todos...

ok gracias

ok gracias si funciono solo que debo indicar la ruta, ahora lo que tengo es esto, bueno no lo hice yo, aclaro, lo que hace es buscar asi como windows 7 busca en su barra de busqueda es decir si coloco .extension me busca en el disco duro todos los archivos con esa extension o si coloco el nombre solo busca el archivo con ese nombre pero tarda mucho que haria para que no tardara tanto
/**
* Javier Abellán, 11 Mayo 2006
*
* Buscador de ficheros.
*/

import java.io.File;
import java.util.LinkedList;
import java.util.regex.Pattern;

/**
* Se le pasa una máscara de nombre de ficheros en formato regex de java
* y busca, recursivamente o no, todos los ficheros que cumplen dicha máscara.
*
* @author Chuidiang
*/
public class BuscadorDeFicheros
{
/**
* Busca todos los ficheros que cumplen la máscara que se le pasa y los
* mete en la listaFicheros que se le pasa.
*
* @param pathInicial Path inicial de búsqueda. Debe ser un directorio que
* exista y con permisos de lectura.
* @param mascara Una máscara válida para la clase Pattern de java.
* @param listaFicheros Una lista de ficheros a la que se añadirán los File
* que cumplan la máscara. No puede ser null. El método no la vacía.
* @param busquedaRecursiva Si la búsqueda debe ser recursiva en todos los
* subdirectorios por debajo del pathInicial.
*/
public static void dameFicheros(String pathInicial, String mascara,
LinkedList listaFicheros, boolean busquedaRecursiva)
{
File directorioInicial = new File(pathInicial);
if (directorioInicial.isDirectory())
{
File[] ficheros = directorioInicial.listFiles();
for (int i = 0; i < ficheros.length; i++)
{
if (ficheros[i].isDirectory() && busquedaRecursiva)
dameFicheros(ficheros[i].getAbsolutePath(), mascara,
listaFicheros, busquedaRecursiva);
else if (Pattern.matches(mascara, ficheros[i].getName()))
listaFicheros.add(ficheros[i]);
}
}
}

/**
* Se le pasa una máscara de fichero típica de ficheros con * e ? y
* devuelve la cadena regex que entiende la clase Pattern.
* @param mascara Un String que no sea null.
* @return Una máscara regex válida para Pattern.
*/
public static String dameRegex(String mascara)
{
mascara = mascara.replace(".", "\\.");
mascara = mascara.replace("*", ".*");
mascara = mascara.replace("?",".");

return mascara;
}

/**
* Main de prueba.
* @param args
*/
public static void main(String[] args)
{
System.out.println("\\");
LinkedList ficherosJava = new LinkedList();
dameFicheros("d:/kane/",
dameRegex("*.mp3"), ficherosJava, true);
for (int i = 0; i < ficherosJava.size(); i++)
System.out.println(ficherosJava.get(i).getAbsolutePath());
}

}

Imagen de rodrigo salado anaya

io y/o nio

Pues usa varios hilos de tu proceso buscar. Lee este articulo de @ezamudio: http://javamexico.org/blogs/ezamudio/java_nio_y_java_io, te va a ayudar y pon tu código entre etiquetas code va.

Suerte.

Para que no tarde tanto, lo

Para que no tarde tanto, lo que tienes que hacer es indexarlos ( que es lo que la busqueda de Windows 7 hace precisamente ) Básicamente almacenas toda la información un una base de datos y luego al buscar haces una consulta a esa base de datos. La direrencia en tiempo es impresionante, pero no es trivial hacer el servicio de indexación, ni mantenerlo al día.

Imagen de ezamudio

Lucene

Indexar texto con Lucene no es complicado. Pero como dices Oscar, lo complicado es mantenerlo al día.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">