본문 바로가기
슬기로운 자바 개발자 생활/Java more

자바 라이브러리 파일, 폴더 작업 [Apache Commons IO]

by 슬기로운 동네 형 2022. 11. 18.
반응형

자바 라이브러리 파일, 폴더 작업 [Apache Commons IO]

 초급 개발자 시절, 자바 기본서를 공부하면서 매번 드는 생각은 언제 이런 것들을 활용하느냐는 의구심이 들었다.

이런 저런 요구사항을 받다 보면 쌩짜로 기능을 짠다는게 참 막막하기도 하고 기본서에 나온 내용들을 짜집기 하다가 포기하곤 했다. 

 조금씩 라이브러리들을 검색하고 외국 유능한 개발자들이 공개하거나 공유하는 라이브러리들을 보고 사용해보면서 그 속에 있는 코드들이 모두 기본서에 있는 내용들이더라.

 기본 기능들을 이용해서 다른 개발자들도 사용할 수 있는 라이브러리를 만드는 일은 정말 멋진 일이지만 그런 유능한 개발자가 되기에는 엄청난 노력과 적성도 맞아야 하는게 현실인거 같다.

 적어도 나는 그런 사람은 못된다. 그 사실을 받아들이고 라이브러리들을 잘 활용하는 개발자가 되기로 수년 전부터 마음 먹었다.

 오늘은 아파치 커몬 IO를 포스팅한다. 물론 아주 쉬운 예제로~ 시작.

 적어도 뭐하는 라이브러리인지는 홈페이지에서 알아보면, 

 

https://commons.apache.org/proper/commons-io/

 

 Apache Commons IO is a library of utilities to assist with developing IO functionality. 이라고 한다.

IO 는 Input, Out 이고, 그 관련된 기능개발을 지원하는 유틸리티.

 

메이븐

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

 

내 컴퓨터 D 드라이브 아래 Worksapce 폴더 아래 모든 파일들을 조회하는 코드다.

특정 확장자만 지정해서 조회도 가능하다.

 

일을 하다보면 별 이상한 기능들을 만들게 되는 경우가 종종 있다.

 

몇해 전인데 데이터베이스의 품목 자료의 성분을 조회 해서 html으로 만든 다음 => 여러 형태로 변환(PDF, work) 하고 그것을 폴더에 떨구어 관련된 사람들에게 메일을 보냄과 동시에 json으로 외부 회사에 sftp로 쏘는 기능을 구현했던 적이 있다. 스케줄도 포함해서...

 

Apache Commons IO 사용의 예

 

 모두 라이브러리를 사용했다. SFTP는 JSch, GJSON, ItextPDF 등등... 다행히 순조롭게 진행이 되어 재미있었다. 만약 라이브러리를 사용하지 않았더라면... 상상만해도 끔찍하다. 틈틈이 자주 사용되는 라이브러리들을 이용해서 간단하 기능을 구현하는 경험은 큰 자산이 된더라.

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;

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

public class FileList {
    public static void main(String[] args) {

        File filedir = new File("D:\\Workspace");

        String[] keyword = {"xml","html"};

        //특정 확장자만 조회
        List<File> files = (List<File>) FileUtils.listFiles(filedir,keyword,true);

        //지정한 경로에 모든 파일 조회
        // List<File> files = (List<File>) FileUtils.listFiles(filedir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);

        for(File file : files){
            System.out.println(file.getAbsolutePath());
        }
    }
}

결과1

xml, html 확장자의 파일만 조회

결과2

모든 파일 조회

역시 소스를 까보니 확장자를 선별해서 조회하는 기능이 있구나.

 

반응형

댓글