소개
이 프로젝트에서는 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 클래스를 사용하여 사용자로부터 지정된 경로를 받는 방법을 배우게 됩니다.
- 코드 편집기에서
SelectTxtFile.java파일을 엽니다. main메서드에서 사용자 입력을 읽기 위해 새로운Scanner객체를 생성합니다:
Scanner scanner = new Scanner(System.in);
- 읽기 경로를 묻는 메시지를 사용자에게 표시합니다:
System.out.print("Please enter the read path:");
nextLine()메서드를 사용하여 사용자의 입력을 읽고path변수에 저장합니다:
String path = scanner.nextLine();
- 입력을 읽은 후, 리소스를 해제하기 위해
Scanner를 닫습니다:
scanner.close();
입력 경로 유효성 검사
이 단계에서는 File 클래스를 사용하여 입력 경로가 유효한 디렉토리인지 확인하는 방법을 배우게 됩니다.
- 사용자 제공
path를 사용하여 새로운File객체를 생성합니다:
File directory = new File(path);
exists()메서드를 사용하여 디렉토리가 존재하는지 확인합니다:
if (!directory.exists() || !directory.isDirectory()) {
- 디렉토리가 존재하지 않거나 디렉토리가 아닌 경우, 오류 메시지를 출력하고 프로그램을 종료합니다:
System.out.println("The directory does not exist, or it is not a directory");
return;
}
디렉토리 내 텍스트 파일 찾기
이 단계에서는 FilenameFilter를 사용하여 디렉토리 내의 모든 텍스트 파일을 찾는 방법을 배우게 됩니다.
FilenameFilter인터페이스를 구현하는 새로운TxtFileFilter클래스를 생성합니다:
static class TxtFileFilter implements FilenameFilter {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".txt");
}
}
File클래스의listFiles()메서드를 사용하여TxtFileFilter로 필터링된 디렉토리 내의 파일 배열을 가져옵니다:
File[] files = directory.listFiles(new TxtFileFilter());
찾은 텍스트 파일 출력
이 마지막 단계에서는 찾은 텍스트 파일을 반복하고 이름을 출력하는 방법을 배우게 됩니다.
- 텍스트 파일이 발견되었음을 나타내는 헤더를 출력합니다:
System.out.println("Found text files:");
for-each루프를 사용하여files배열을 반복하고 각 파일의 이름을 출력합니다:
for (File file : files) {
System.out.println(file.getName());
}
이것이 전부입니다! 이제 디렉토리에서 텍스트 파일을 검색하는 프로젝트를 완료했습니다. SelectTxtFile 클래스를 실행하여 프로그램을 테스트할 수 있습니다.
파일 검색을 위한 Java 프로그램 검증
이 단계에서는 파일 검색 Java 프로그램을 검증합니다.
- 터미널을 열고
javac명령을 사용하여 Java 파일을 컴파일합니다:
javac SelectTxtFile.java
- Java 파일이 성공적으로 컴파일된 후,
java명령을 사용하여 컴파일된 프로그램을 실행합니다:
java SelectTxtFile
- Java 프로그램을 실행하면 읽기 경로를 입력하라는 메시지가 표시됩니다. 텍스트 파일이 있는 디렉토리 경로를 제공하고 Enter 키를 누릅니다.
- 디렉토리가 존재하지 않거나 디렉토리가 아닌 경우, 해당 문제를 나타내는 메시지를 받게 됩니다.
- 디렉토리가 유효하고 텍스트 파일이 포함된 경우, 프로그램은 해당 디렉토리에서 찾은 텍스트 파일의 이름을 표시합니다.
다음은 예상 출력의 예입니다:
Please enter the read path:/home/labex/project/files
Found text files:
file1.txt
file3.txt
file6.txt
이 단계를 따르면 텍스트 파일을 선택하기 위한 Java 프로그램의 기능을 검증할 수 있습니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



