使用Apache POI库检测文件内容来判断文件是doc还是docx

Apache POI是一个流行的Java库,用于处理Microsoft Office文档,包括Word文档。使用POI可以更准确地检测文档格式,即使文件的扩展名不正确。
<!-- Apache POI -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version> <!-- 使用最新的版本 -->
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version> <!-- 使用最新的版本 -->
</dependency>
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
 
public class CheckFileFormatWithPOI {
    public static void main(String[] args) {
        File file = new File("example.docx");
        try (FileInputStream fis = new FileInputStream(file)) {
            if (POIFSFileSystem.hasPOIFSHeader(fis)) { // 检查是否是老版本的Word文档(例如.doc)
                System.out.println("It's a Word 97-2003 document.");
            } else if (XSSFWorkbook.getWorkbookType(fis) == WorkbookType.XLSX) { // 检查是否是较新的Word文档(例如.docx)
                System.out.println("It's a Word 2007+ document.");
            } else {
                System.out.println("It's not a Word document.");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

posted @ 2025-04-24 15:26  Liu66~  阅读(122)  评论(0)    收藏  举报