Java通过InputStream判断word格式

Java通过InputStream判断word格式

    • [1. 传入inputStream文件流](#1. 传入inputStream文件流)
    • [2. 读取文件流前八个字节到字节流数组中](#2. 读取文件流前八个字节到字节流数组中)
    • [3. 转为字符串](#3. 转为字符串)
    • [4. 对比字符串判断文件类型](#4. 对比字符串判断文件类型)
    • [5. 完整代码](#5. 完整代码)

Java通过InputStream判断word格式)

1. 传入inputStream文件流

2. 读取文件流前八个字节到字节流数组中

java 复制代码
byte[] byteArray = new byte[8];
inputStream.read(byteArray, 0, 8);

3. 转为字符串

java 复制代码
StringBuilder sb = new StringBuilder();
for (byte b : byteArray) {
    sb.append(String.format("%02X", b));
}

4. 对比字符串判断文件类型

java 复制代码
if (hexString.startsWith("D0CF11E0A1B11AE1")) {
    return "doc";
} else if (hexString.startsWith("504B030414000600")) {
    return "docx";
} else {
    return "unknown";
}

5. 完整代码

java 复制代码
/**
     * 通过流判断word格式
     * @param inputStream
     * @return
     * @throws IOException
     */
    public static String detectFileType(InputStream inputStream) throws IOException {
    byte[] byteArray = new byte[8];
    try{
        inputStream.read(byteArray, 0, 8);
        String hexString = bytesToHexString(byteArray);
        if (hexString.startsWith("D0CF11E0A1B11AE1")) {
            return "doc";
        } else if (hexString.startsWith("504B030414000600")) {
            return "docx";
        } else {
            return "unknown";
        }
    } finally {
        if (inputStream !=null) {
            inputStream.close();
        }
    }
}

private static String bytesToHexString(byte[] byteArray) {
    StringBuilder sb = new StringBuilder();
    for (byte b : byteArray) {
        sb.append(String.format("%02X", b));
    }
    return sb.toString();
}
相关推荐
到账一个亿4 分钟前
后端树形结构
后端
不坑老师6 分钟前
利用不坑盒子的Copilot,快速排值班表
microsoft·word·powerpoint·excel·copilot·wps
武子康7 分钟前
大数据-31 ZooKeeper 内部原理 Leader选举 ZAB协议
大数据·后端·zookeeper
我是哪吒8 分钟前
分布式微服务系统架构第155集:JavaPlus技术文档平台日更-Java线程池实现原理
后端·面试·github
G探险者12 分钟前
《如何在 Spring 中实现 MQ 消息的自动重连:监听与发送双通道策略》
java·开发语言·rpc
刘大猫2619 分钟前
Datax安装及基本使用
java·人工智能·算法
代码老y22 分钟前
Spring Boot + 本地部署大模型实现:安全性与可靠性保障
spring boot·后端·bootstrap
LaoZhangAI24 分钟前
OpenAI API 账号分层完全指南:2025年最新Tier系统、速率限制与升级攻略
前端·后端
红衣信31 分钟前
前端与后端存储全解析:从 Cookie 到缓存策略
前端·后端·面试
Kyrie_Li32 分钟前
(十五)Spring Test
java·后端·spring