2012-01-19 14 views
6

Necesito leer todos los archivos ".txt" de la carpeta (el usuario debe seleccionar esta carpeta).¿Cómo obtener todos los archivos de texto de una carpeta usando Java?

¿Desea aconsejar cómo hacerlo?

+3

Cómo se relaciona con la tarea Spri ng MVC? –

+2

¿qué has intentado? U puedes hacerlo de la misma manera que hacerlo en Java dentro del programa controlador –

+0

¿La carpeta estará en el lado del cliente? – Manish

Respuesta

10

puede utilizar filenamefilter clase es bastante simple uso void main (String [] args) throws IOException públicas estáticas {

File f = new File("c:\\mydirectory"); 

    FilenameFilter textFilter = new FilenameFilter() { 
     public boolean accept(File dir, String name) { 
      return name.toLowerCase().endsWith(".txt"); 
     } 
    }; 

    File[] files = f.listFiles(textFilter); 
    for (File file : files) { 
     if (file.isDirectory()) { 
      System.out.print("directory:"); 
     } else { 
      System.out.print("  file:"); 
     } 
     System.out.println(file.getCanonicalPath()); 
    } 

} 

acaba de crear una instancia filenamefilter una anulación aceptar método de cómo desea

+0

+1 por ser el primero en mencionar ['FilenameFilter'] (http://docs.oracle.com/javase/7/docs/api/java/io/FilenameFilter.html). –

1

Necesita leer el directory y repetir dentro de él.

es más una cuestión sobre el acceso a los sistemas de archivos de Java que aproximadamente MVC

+0

El directorio está en el lado del cliente, esto no funcionará. – Manish

2

Asumiendo que ya tiene el directorio, se puede hacer algo como esto:

File directory= new File("user submits directory"); 
for (File file : directory.listFiles()) 
{ 
    if (FileNameUtils.getExtension(file.getName()).equals("txt")) 
    { 
     //dom something here. 
    } 
} 

El FileNameUtils.getExtension () se puede encontrar here.

Editar: Lo que parece querer hacer es acceder a la estructura de archivos desde el navegador web. Según this anterior publicación SO, lo que desea hacer no es posible debido a razones de seguridad.

+0

El directorio está en el lado del cliente, esto no funcionará. – Manish

+0

esto funciona, cuando el usuario selecciona un archivo, pasa la ruta al constructor Archivo –

+0

Esto solo funcionará si la carpeta seleccionada está en el lado del servidor (que no parece ser el caso aquí). No puede acceder a una carpeta del lado del cliente desde el lado del servidor. – Manish

1

Escribí la siguiente función que buscará todos los archivos de texto dentro de un directorio.

public static void parseDir(File dirPath) 
    { 

     File files[] = null; 
     if(dirPath.isDirectory()) 
     { 
      files = dirPath.listFiles(); 
      for(File dirFiles:files) 
      { 

       if(dirFiles.isDirectory()) 
       { 
        parseDir(dirFiles); 
       } 
       else 
       { 
        if(dirFiles.getName().endsWith(".txt")) 
        { 
         //do your processing here.... 
        } 
       } 
      } 

     } 
     else 
     { 
      if(dirPath.getName().endsWith(".txt")) 
      { 
       //do your processing here.... 
      } 
     } 

    } 

ver si esto ayuda.

1

proporcionan un cuadro de texto para que el usuario ingrese la ruta del directorio.

File userDir=new File("userEnteredDir"); 
File[] allfiles=useDir.listFiles(); 

Iterar TodosLosArchivos para filtrar los archivos .txt utilizando getExtension método()

Cuestiones relacionadas