Java通过InputStream判断word格式
Java通过InputStream判断word格式)
1. 传入inputStream文件流
2. 读取文件流前八个字节到字节流数组中
byte[] byteArray = new byte[8];
inputStream.read(byteArray, 0, 8);
3. 转为字符串
StringBuilder sb = new StringBuilder();
for (byte b : byteArray) {
sb.append(String.format("%02X", b));
}
4. 对比字符串判断文件类型
if (hexString.startsWith("D0CF11E0A1B11AE1")) {
return "doc";
} else if (hexString.startsWith("504B030414000600")) {
return "docx";
} else {
return "unknown";
}
5. 完整代码
/**
* 通过流判断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();
}