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
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook