[java] Apache Commons IO를 이용한 파일 필터 조합하기

Java에서 파일을 다루는 작업을 수행할 때, 파일 필터를 사용하여 특정 조건에 맞는 파일들만 선택할 수 있습니다. Apache Commons IO 라이브러리는 이러한 파일 필터 작업을 편리하게 처리할 수 있는 기능을 제공합니다. 이번 포스트에서는 Apache Commons IO를 사용하여 파일 필터를 조합하는 방법을 알아보겠습니다.

1. 디펜던시 추가하기

먼저, Apache Commons IO를 사용하기 위해서는 해당 라이브러리를 프로젝트의 디펜던시에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다.

<dependencies>
    ...
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.11.0</version>
    </dependency>
    ...
</dependencies>

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 의존성을 추가합니다.

dependencies {
    ...
    implementation 'commons-io:commons-io:2.11.0'
    ...
}

2. 파일 필터 조합하기

Apache Commons IO를 사용하여 파일 필터를 조합하는 방법은 다음과 같습니다.

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.FileFilterUtils;
import org.apache.commons.io.filefilter.IOFileFilter;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class FileFilterExample {

    public static void main(String[] args) {
        File directory = new File("/path/to/directory");

        // 파일 필터 조합하기
        IOFileFilter extensionFilter = FileFilterUtils.suffixFileFilter(".txt");
        IOFileFilter sizeFilter = FileFilterUtils.sizeRangeFileFilter(1024, 4096);
        IOFileFilter combinedFilter = FileFilterUtils.and(extensionFilter, sizeFilter);

        // 디렉토리에서 필터 조건에 맞는 파일들 선택하기
        List<File> filteredFiles = new ArrayList<>();
        FileUtils.listFiles(directory, combinedFilter, null).forEach(filteredFiles::add);

        // 선택된 파일들 출력하기
        for (File file : filteredFiles) {
            System.out.println(file.getAbsolutePath());
        }
    }
}

위의 예제에서는 .txt 확장자를 가지고 있고, 크기가 1024 바이트에서 4096 바이트 사이인 파일들을 필터링합니다. 이러한 조건에 맞는 파일들을 선택하여 파일의 경로를 출력합니다.

3. 결과 확인하기

실행 결과로, /path/to/directory 디렉토리에서 조건에 맞는 파일들의 경로가 출력됩니다.

/path/to/directory/file1.txt
/path/to/directory/file2.txt
...

4. 결론

Apache Commons IO를 사용하면 파일 필터를 조합하여 원하는 조건에 맞는 파일들만 선택할 수 있습니다. 이를 통해 파일 처리 작업을 더욱 간단하고 효율적으로 수행할 수 있습니다. 자세한 내용은 Apache Commons IO 문서를 참고하세요.