Recent Posts
Recent Comments
Link
12-05 00:04
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

org.apache.poi 자바용 오피스 라이브러리 임시 파일 제거 본문

DEV&OPS/Java

org.apache.poi 자바용 오피스 라이브러리 임시 파일 제거

ALEPH.GEM 2024. 11. 27. 22:23

POI 라이브러리 임시 파일 저장 경로 지정

자바로 오피스(엑셀) 파일을 다룰 때 흔히 사용하는 org.ahache.poi 라이브러리를 사용할 때, 엑셀 파일 작성을 위한 데이터와 스타일 정보들이 정의된 xml 형식의 임시 파일들이 생성되게 됩니다.

이 임시 파일들이 생성되는 경로는 기본적으로 시스템의 임시 디렉토리 경로를 사용합니다.

그런데 리눅스에서는 기본 임시 파티션인 /tmp 을 사용하게 되는데, 이 /tmp 파티션이 용량이 부족한 경우가 발생할 수 있습니다.

public class TempDirCheck {
    public static void main(String[] args) {
        String tempDir = System.getProperty("java.io.tmpdir");
        System.out.println("Temporary Directory: " + tempDir);
    }
}

System.getProperty("java.io.tmpdir")을 이용하면 자바 application에서 시스템의 임시 디렉토리 경로를 알아낼 수 있습니다.

자바 application이 실행되는 JVM 환경 변수를 지정해서 이 임시 파일들이 저장되는 경로를 변경해줄 수 있습니다.

-Djava.io.tmpdir=/your/custom/tmpdir

 

톰캣(WAS)이나 자바를 실행할 때 위 처럼 tmpdir을 특정 경로로 지정해주면 poi 라이브러리에서 사용하는 임시 파일(xml)들이 저장되는 경로를 지정해 줄 수 있습니다. 

 

 

poi 라이브러리 임시 파일 자동 삭제

Apache POI 라이브러리를 사용해서 대용량 데이터를 처리할 때 SXSSFWorkbook을 이용하면 성능을 최적화 할 수 있습니다.

이 때 dispose() 메소드를 작업 끝난 후 사용하면 생성되었던 임시 파일(xml)들을 자동으로 삭제 할 수 있습니다.

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;

public class POIDisposeExample {
    public static void main(String[] args) {
        // SXSSFWorkbook 생성
        SXSSFWorkbook workbook = new SXSSFWorkbook();
        Sheet sheet = workbook.createSheet("ExampleSheet");

        // 데이터를 시트에 작성
        for (int rownum = 0; rownum < 1000; rownum++) {
            Row row = sheet.createRow(rownum);
            for (int cellnum = 0; cellnum < 10; cellnum++) {
                Cell cell = row.createCell(cellnum);
                cell.setCellValue("Data " + rownum + "," + cellnum);
            }
        }

        try (FileOutputStream out = new FileOutputStream("example.xlsx")) {
            workbook.write(out);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 작업이 완료된 후 dispose() 메소드를 호출하여 임시 파일 삭제
            workbook.dispose();
        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

728x90

'DEV&OPS > Java' 카테고리의 다른 글

[SWT/JFace] FileDialog 파일 열기 대화 상자  (0) 2024.11.27
[SWT/JFace] 주요 위젯  (0) 2024.11.27
[SWT/JFace] 이벤트 처리  (45) 2024.11.27
[SWT/JFace] Composite 클래스  (1) 2024.11.27
[SWT/JFace] Widget, Control, Label, Button  (1) 2024.11.27