디렉토리 내 텍스트 파일 검색

JavaBeginner
지금 연습하기

소개

이 프로젝트에서는 Java 를 사용하여 디렉토리 내에서 텍스트 파일을 검색하는 방법을 배우게 됩니다. 이 프로젝트는 사용자로부터 입력 경로를 얻고, 입력을 검증하고, 디렉토리 내의 모든 텍스트 파일을 찾고, 해당 파일의 이름을 출력하는 과정을 안내합니다.

👀 미리보기

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

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • Scanner 클래스를 사용하여 디렉토리 경로에 대한 사용자 입력을 받는 방법
  • File 클래스를 사용하여 입력 경로를 검증하는 방법
  • 텍스트 파일을 필터링하기 위해 사용자 정의 FilenameFilter를 생성하는 방법
  • listFiles() 메서드를 사용하여 디렉토리 내의 모든 텍스트 파일을 찾는 방법
  • 찾은 텍스트 파일을 반복 처리하고 이름을 출력하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • Scanner 클래스를 사용하여 디렉토리 경로에 대한 사용자 입력을 얻을 수 있습니다.
  • File 클래스를 사용하여 입력 경로를 검증할 수 있습니다.
  • 텍스트 파일을 필터링하기 위해 사용자 정의 FilenameFilter를 구현할 수 있습니다.
  • listFiles() 메서드를 활용하여 디렉토리 내의 모든 텍스트 파일을 검색할 수 있습니다.
  • 찾은 텍스트 파일을 반복 처리하고 이름을 출력할 수 있습니다.

입력 경로 받기

이 단계에서는 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. 사용자 제공 path를 사용하여 새로운 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. FilenameFilter 인터페이스를 구현하는 새로운 TxtFileFilter 클래스를 생성합니다:
static class TxtFileFilter implements FilenameFilter {
    @Override
    public boolean accept(File dir, String name) {
        return name.toLowerCase().endsWith(".txt");
    }
}
  1. File 클래스의 listFiles() 메서드를 사용하여 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. 터미널을 열고 javac 명령을 사용하여 Java 파일을 컴파일합니다:
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 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습