[java] Apache POI를 이용한 Word 문서 파일명 변경

Apache POI는 Java에서 Microsoft Office 파일을 다루는 데 사용되는 라이브러리입니다. 이 라이브러리를 사용하면 Java 코드로 Word, Excel, PowerPoint 등의 문서를 읽고 수정할 수 있습니다.

이번에는 Apache POI를 사용하여 Word 문서의 파일명을 변경하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 가져오기

아래의 의존성을 pom.xml 파일에 추가하여 Apache POI 라이브러리를 가져옵니다.

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>

Word 문서 파일명 변경 코드 예시

import org.apache.poi.xwpf.usermodel.XWPFDocument;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class WordFileRenamer {

    public static void renameFile(String filePath, String newName) throws IOException {
        File file = new File(filePath);

        if (file.exists() && file.isFile()) {
            XWPFDocument document = new XWPFDocument(new FileInputStream(file));
            FileOutputStream out = new FileOutputStream(newName);

            document.write(out);
            document.close();
            out.close();

            boolean isSuccess = file.delete();

            if (!isSuccess) {
                throw new IOException("Failed to delete the original file.");
            }
        } else {
            throw new IOException("File does not exist or is not a regular file.");
        }
    }

    public static void main(String[] args) {
        try {
            String filePath = "path/to/word/document.docx";
            String newFileName = "new_document.docx";

            renameFile(filePath, newFileName);

            System.out.println("File renamed successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 지정한 파일 경로의 Word 문서를 new_document.docx로 이름을 변경하는 예시입니다.

코드 설명

  1. renameFile 메소드는 파일 경로(filePath)와 새로운 파일명(newName)을 인자로 받습니다.
  2. 주어진 파일 경로에 해당하는 파일이 존재하는지 확인합니다.
  3. 파일이 존재하면 XWPFDocument를 사용하여 Word 문서를 엽니다.
  4. 새로운 파일명으로 파일을 생성하기 위해 FileOutputStream을 초기화합니다.
  5. 열린 Word 문서를 새로운 파일명으로 저장합니다.
  6. 이후 문서 및 출력 스트림을 닫습니다.
  7. 원래 파일을 삭제합니다. (Optional)
  8. 파일 삭제에 실패하는 경우 IOException을 발생시킵니다.
  9. main 메소드에서 renameFile을 호출하여 파일명 변경 작업을 실행합니다.

참고 자료