HOWTO · Java
Java의 FileFilter
이 자습서는 Java에서 FileFilter를 사용하는 방법을 보여줍니다.
이 페이지의 내용
이 자습서는 Java에서 FileFilter를 사용하는 방법을 보여줍니다.
FileFilter는 특정 확장자를 가진 파일을 필터링하는 데 사용됩니다. Java 내장 패키지 IO 및 Apache Commons IO는 파일 필터 작업을 수행하기 위해 FileFilter에 대한 클래스 및 인터페이스를 제공합니다.
Java의 IO 패키지에서 FileFilter
FileFilter는 지정된 경로의 파일 및 하위 디렉토리에 대한 필터로 사용되는 Java IO 패키지의 클래스입니다. FileFilter 클래스는 File 객체를 가져와 읽기 전용 등과 같은 속성을 기반으로 필터링합니다.
FileFilter에는 지정된 초록이 목록에 포함되어야 하는지 여부를 확인하는 데 사용되는 accept() 메서드가 하나만 있습니다. 다음은 accept() 메서드를 사용하는 방법의 예입니다.
FileFilter Demo_Filefilter = new FileFilter() {
public boolean accept(File Demo_File) {
if (Demo_File.getName().endsWith(".txt")) {
return true;
}
return false;
}
};
이제 FileFilter를 사용하는 가장 좋은 방법은 FileFilter를 디렉토리 위치를 나타내는 listfiles() 메서드에 전달하는 것입니다.
실행 예를 시도해 보겠습니다.
package delftstack;
import java.io.File;
import java.io.FileFilter;
public class Example {
public static void main(String[] args) {
File File_Directory = new File("C:\\Users\\Sheeraz\\eclipse-workspace\\Demos");
// check if the directory is valid directory
if (!(File_Directory.exists() && File_Directory.isDirectory())) {
System.out.println(String.format("This Directory does not exist", File_Directory));
return;
}
FileFilter Demo_Filefilter = new FileFilter() {
public boolean accept(File Demo_File) {
if (Demo_File.getName().endsWith(".txt")) {
return true;
}
return false;
}
};
File[] Text_Files = File_Directory.listFiles(Demo_Filefilter);
for (File Demo_File : Text_Files) {
System.out.println(Demo_File.getName());
}
}
}
위의 코드는 .txt 확장자를 가진 파일을 필터링합니다.
출력 참조:
delftstack.txt
FileFilter는 구문이 적고 훨씬 쉬운 람다 식을 사용하여 구현할 수도 있습니다.
예를 참조하십시오:
package delftstack;
import java.io.File;
import java.io.FileFilter;
public class Example {
public static void main(String[] args) {
File File_Directory = new File("C:\\Users\\Sheeraz\\eclipse-workspace\\Demos");
// check if the directory is valid directory
if (!(File_Directory.exists() && File_Directory.isDirectory())) {
System.out.println(String.format("This Directory does not exist", File_Directory));
return;
}
FileFilter Demo_FileFilter = (Demo_File) -> {
return Demo_File.getName().endsWith(".txt");
};
File[] Text_Files = File_Directory.listFiles(Demo_FileFilter);
for (File Demo_File : Text_Files) {
System.out.println(Demo_File.getName());
}
}
}
위의 코드는 유사하게 작동하며 .txt 확장자를 가진 파일을 반환합니다.
출력 참조:
delftstack.txt
Java의 Apache Commons IO 패키지의 FileFilter
Apache Commons-IO의 FileFilter 패키지는 특정 확장자를 가진 파일 선택, 특정 문자로 시작하거나 끝나는 파일 등 다양한 파일 필터 작업을 수행하는 데 사용됩니다. Apache Commons의 FileFilter 패키지 프리미티브 및 부울 필터를 제공합니다. 즉, 필터 중 일부는 프리미티브 값과 부울 값을 반환합니다.
아래 표를 참조하십시오.
기본 필터:
| 방법 | 설명 |
|---|---|
DirectoryFilter |
디렉토리만 허용합니다. |
PrefixFileFilter |
접두사를 기반으로 필터링합니다. |
SuffixFileFilter |
접미사를 기준으로 필터링합니다. |
NameFileFilter |
파일 이름을 기준으로 필터링하는 데 사용됩니다. |
WildcardFileFilter |
와일드카드를 기반으로 필터링하는 데 사용됩니다. |
AgeFileFilter |
파일의 마지막 수정 시간을 기준으로 필터링합니다. |
SizeFileFilter |
파일 크기를 기준으로 필터링합니다. |
부울 필터:
| 방법 | 설명 |
|---|---|
TrueFileFilter |
모든 파일을 수락합니다. |
FalseFileFilter |
파일을 허용하지 않습니다. |
NotFileFilter |
기존 필터에 논리 NOT를 적용합니다. |
AndFileFilter |
논리적 AND를 사용하여 두 필터를 결합합니다. |
OrFileFilter |
논리 OR을 사용하여 두 개의 필터를 결합합니다. |
예제에서 위 방법의 필터를 사용해 봅시다.
package delftstack;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.filefilter.SuffixFileFilter;
public class Example {
public static void main(String[] args) {
try {
Suffix_FileFilter();
} catch (IOException iox) {
System.out.println(iox.getMessage());
}
}
public static void Suffix_FileFilter() throws IOException {
// current directory
File Current_Directory = new File(".");
// all files and directories in the current directory
String[] All_Files = Current_Directory.list();
System.out.println("All files and directories :\n");
for (int i = 0; i < All_Files.length; i++) {
System.out.println(All_Files[i]);
}
System.out.println("\nThe Text Files: \n");
String[] Text_Files = Current_Directory.list(new SuffixFileFilter("txt"));
for (int i = 0; i < Text_Files.length; i++) {
System.out.println(Text_Files[i]);
}
}
}
위의 코드는 SuffixFileFilter를 사용하여 주어진 디렉토리에서 텍스트 파일을 필터링합니다. 또한 제공된 폴더의 모든 파일과 하위 디렉터리를 나열합니다.
출력을 참조하십시오.
All files and directories :
.classpath
.gitignore
.project
bin
delftstack.fxml
delftstack.fxml.bak
delftstack.pdf
Delftstack.png
delftstack.txt
delftstack.xml
delftstack.zip
DemoClassBytes.ser
employee.json
ExampleClassBytes.ser
Makefile
pom.xml
PythonFromJava.py
readme.md
src
student.json
The Text Files:
delftstack.txt