使用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(); } } }