Поиск текстовых файлов в директории

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь искать текстовые файлы в директории с использованием Java. В этом проекте вас проведет по процессу получения пути ввода от пользователя, проверки ввода, поиска всех текстовых файлов в директории и вывода их имен.

👀 Предварительный просмотр

Пожалуйста, введите путь для чтения:/home/labex/project/files
Найденные текстовые файлы:
file1.txt
file3.txt
file6.txt

🎯 Задачи

В этом проекте вы научитесь:

  • Как использовать класс Scanner для получения ввода пользователя для пути к директории
  • Как проверить введенный путь с использованием класса File
  • Как создать пользовательский FilenameFilter для фильтрации текстовых файлов
  • Как использовать метод listFiles() для поиска всех текстовых файлов в директории
  • Как перебирать найденные текстовые файлы и выводить их имена

🏆 Достижения

После завершения этого проекта вы сможете:

  • Получать ввод пользователя для пути к директории с использованием класса Scanner
  • Проверять введенный путь с использованием класса File
  • Реализовать пользовательский FilenameFilter для фильтрации текстовых файлов
  • Использовать метод listFiles() для получения всех текстовых файлов в директории
  • Перебирать найденные текстовые файлы и выводить их имена

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) 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{{"Поиск текстовых файлов в директории"}} java/for_loop -.-> lab-300396{{"Поиск текстовых файлов в директории"}} java/output -.-> lab-300396{{"Поиск текстовых файлов в директории"}} java/user_input -.-> lab-300396{{"Поиск текстовых файлов в директории"}} java/interface -.-> lab-300396{{"Поиск текстовых файлов в директории"}} java/files -.-> lab-300396{{"Поиск текстовых файлов в директории"}} java/read_files -.-> lab-300396{{"Поиск текстовых файлов в директории"}} java/io -.-> lab-300396{{"Поиск текстовых файлов в директории"}} end

Получить путь ввода

В этом шаге вы научитесь использовать класс Scanner для получения указанного пути от пользователя.

  1. Откройте файл SelectTxtFile.java в вашем редакторе кода.
  2. В методе main создайте новый объект Scanner для чтения ввода пользователя:
Scanner scanner = new Scanner(System.in);
  1. Отобразите сообщение-подсказку для пользователя, запрашивающее путь для чтения:
System.out.print("Please enter the read path:");
  1. Используйте метод nextLine() для чтения ввода пользователя и сохраните его в переменной path:
String path = scanner.nextLine();
  1. После чтения ввода закройте Scanner, чтобы освободить ресурсы:
scanner.close();
✨ Проверить решение и практиковаться

Проверить введенный путь

В этом шаге вы научитесь использовать класс File для проверки, является ли введенный путь действительной директорией.

  1. Создайте новый объект File с путем, предоставленным пользователем:
File directory = new File(path);
  1. Используйте метод exists() для проверки существования директории:
if (!directory.exists() ||!directory.isDirectory()) {
  1. Если директория не существует или не является директорией, выведите сообщение об ошибке и завершите программу:
    System.out.println("The directory does not exist, or it is not a directory");
    return;
}
✨ Проверить решение и практиковаться

Найти текстовые файлы в директории

В этом шаге вы научитесь использовать FilenameFilter для поиска всех текстовых файлов в директории.

  1. Создайте новый класс TxtFileFilter, который реализует интерфейс FilenameFilter:
static class TxtFileFilter implements FilenameFilter {
    @Override
    public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith(".txt");
    }
}
  1. Используйте метод listFiles() класса File для получения массива файлов в директории, отфильтровав их с использованием TxtFileFilter:
File[] files = directory.listFiles(new TxtFileFilter());
✨ Проверить решение и практиковаться

Распечатать найденные текстовые файлы

В этом последнем шаге вы научитесь перебирать найденные текстовые файлы и выводить их имена.

  1. Распечатайте заголовок, чтобы показать, что текстовые файлы были найдены:
System.out.println("Found text files:");
  1. Используйте цикл for-each для перебора массива files и распечатайте имя каждого файла:
for (File file : files) {
    System.out.println(file.getName());
}

Вот и все! Теперь вы завершили проект по поиску текстовых файлов в директории. Вы можете протестировать свою программу, запустив класс SelectTxtFile.

✨ Проверить решение и практиковаться

Проверка Java-программы для поиска файлов

В этом шаге мы проверим Java-программу для поиска файлов.

  1. Откройте терминал и скомпилируйте Java-файл с помощью команды javac:
javac SelectTxtFile.java
  1. После успешной компиляции Java-файла запустите скомпилированную программу с помощью команды java:
java SelectTxtFile
  1. При запуске Java-программы вас попросят ввести путь для чтения. Укажите путь к директории, в которой находятся текстовые файлы, и нажмите Enter.
  • Если директория не существует или не является директорией, вы получите сообщение с указанием проблемы.
  • Если директория действительна и содержит текстовые файлы, программа выведет имена найденных в этой директории текстовых файлов.

Вот пример ожидаемого вывода:

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

Следуя этим шагам, вы можете проверить функциональность Java-программы для выбора текстовых файлов.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.