Buscar archivos de texto en el directorio

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás a buscar archivos de texto en un directorio utilizando Java. Este proyecto te guiará a través del proceso de obtener la ruta de entrada del usuario, validar la entrada, encontrar todos los archivos de texto en el directorio y mostrar sus nombres.

👀 Vista previa

Por favor, ingrese la ruta de lectura:/home/labex/project/files
Archivos de texto encontrados:
file1.txt
file3.txt
file6.txt

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo utilizar la clase Scanner para obtener la entrada del usuario para la ruta del directorio
  • Cómo validar la ruta de entrada utilizando la clase File
  • Cómo crear un FilenameFilter personalizado para filtrar archivos de texto
  • Cómo utilizar el método listFiles() para encontrar todos los archivos de texto en el directorio
  • Cómo iterar a través de los archivos de texto encontrados y mostrar sus nombres

🏆 Logros

Después de completar este proyecto, podrás:

  • Obtener la entrada del usuario para una ruta de directorio utilizando la clase Scanner
  • Validar la ruta de entrada utilizando la clase File
  • Implementar un FilenameFilter personalizado para filtrar archivos de texto
  • Utilizar el método listFiles() para recuperar todos los archivos de texto en un directorio
  • Iterar a través de los archivos de texto encontrados y mostrar sus nombres

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/interface("Interface") java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/read_files("Read Files") java/FileandIOManagementGroup -.-> java/io("IO") subgraph Lab Skills java/if_else -.-> lab-300396{{"Buscar archivos de texto en el directorio"}} java/for_loop -.-> lab-300396{{"Buscar archivos de texto en el directorio"}} java/output -.-> lab-300396{{"Buscar archivos de texto en el directorio"}} java/user_input -.-> lab-300396{{"Buscar archivos de texto en el directorio"}} java/interface -.-> lab-300396{{"Buscar archivos de texto en el directorio"}} java/files -.-> lab-300396{{"Buscar archivos de texto en el directorio"}} java/read_files -.-> lab-300396{{"Buscar archivos de texto en el directorio"}} java/io -.-> lab-300396{{"Buscar archivos de texto en el directorio"}} end

Obtener la ruta de entrada

En este paso, aprenderás a utilizar la clase Scanner para obtener la ruta especificada por el usuario.

  1. Abra el archivo SelectTxtFile.java en su editor de código.
  2. En el método main, cree un nuevo objeto Scanner para leer la entrada del usuario:
Scanner scanner = new Scanner(System.in);
  1. Muestre un mensaje de solicitud al usuario para que ingrese la ruta de lectura:
System.out.print("Please enter the read path:");
  1. Utilice el método nextLine() para leer la entrada del usuario y almacenarla en la variable path:
String path = scanner.nextLine();
  1. Después de leer la entrada, cierre el Scanner para liberar los recursos:
scanner.close();
✨ Revisar Solución y Practicar

Validar la ruta de entrada

En este paso, aprenderás a utilizar la clase File para comprobar si la ruta de entrada es un directorio válido.

  1. Crea un nuevo objeto File con la path proporcionada por el usuario:
File directory = new File(path);
  1. Utiliza el método exists() para comprobar si el directorio existe:
if (!directory.exists() ||!directory.isDirectory()) {
  1. Si el directorio no existe o no es un directorio, muestra un mensaje de error y sale del programa:
    System.out.println("The directory does not exist, or it is not a directory");
    return;
}
✨ Revisar Solución y Practicar

Encontrar archivos de texto en el directorio

En este paso, aprenderás a utilizar un FilenameFilter para encontrar todos los archivos de texto en el directorio.

  1. Crea una nueva clase TxtFileFilter que implemente la interfaz FilenameFilter:
static class TxtFileFilter implements FilenameFilter {
    @Override
    public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith(".txt");
    }
}
  1. Utiliza el método listFiles() de la clase File para obtener una matriz de archivos en el directorio, filtrándolos con el TxtFileFilter:
File[] files = directory.listFiles(new TxtFileFilter());
✨ Revisar Solución y Practicar

Imprimir los archivos de texto encontrados

En este último paso, aprenderás a iterar a través de los archivos de texto encontrados y a imprimir sus nombres.

  1. Imprime un encabezado para indicar que se han encontrado archivos de texto:
System.out.println("Found text files:");
  1. Utiliza un bucle for-each para iterar a través de la matriz files e imprimir el nombre de cada archivo:
for (File file : files) {
    System.out.println(file.getName());
}

¡Eso es todo! Has completado ahora el proyecto de búsqueda de archivos de texto en un directorio. Puedes probar tu programa ejecutando la clase SelectTxtFile.

✨ Revisar Solución y Practicar

Verificando el programa Java de búsqueda de archivos

En este paso, verificaremos el programa Java de búsqueda de archivos.

  1. Abra su terminal y compile el archivo Java utilizando el comando javac:
javac SelectTxtFile.java
  1. Después de compilar con éxito el archivo Java, ejecute el programa compilado utilizando el comando java:
java SelectTxtFile
  1. Al ejecutar el programa Java, se le pedirá que ingrese la ruta de lectura. Proporcione la ruta del directorio donde se encuentran los archivos de texto y presione Enter.
  • Si el directorio no existe o no es un directorio, recibirá un mensaje que indica el problema.
  • Si el directorio es válido y contiene archivos de texto, el programa mostrará los nombres de los archivos de texto encontrados en ese directorio.

A continuación, se muestra un ejemplo de salida esperada:

Please enter the read path:/home/labex/project/files
Found text files:
file1.txt
file3.txt
file6.txt

Siguiendo estos pasos, puede verificar la funcionalidad del programa Java para la selección de archivos de texto.

✨ Revisar Solución y Practicar

Resumen

¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.