public class FileTypeUtil extends Object
此工具根据文件的前几位bytes猜测文件类型,对于文本、zip判断不准确,对于视频、图片类型判断准确
需要注意的是,xlsx、docx等Office2007格式,全部识别为zip,因为新版采用了OpenXML格式,这些格式本质上是XML文件打包为zip
| Constructor and Description |
|---|
FileTypeUtil() |
| Modifier and Type | Method and Description |
|---|---|
static String |
getType(File file)
根据文件流的头部信息获得文件类型
1、无法识别类型默认按照扩展名识别
2、xls、doc、msi头信息无法区分,按照扩展名区分
3、zip可能为jar、war头信息无法区分,按照扩展名区分
|
static String |
getType(File file,
boolean isExact)
根据文件流的头部信息获得文件类型
1、无法识别类型默认按照扩展名识别
2、xls、doc、msi头信息无法区分,按照扩展名区分
3、zip可能为jar、war头信息无法区分,按照扩展名区分
|
static String |
getType(InputStream in)
|
static String |
getType(InputStream in,
boolean isExact)
|
static String |
getType(InputStream in,
int fileHeadSize)
根据文件流的头部信息获得文件类型
|
static String |
getType(InputStream in,
String filename)
根据文件流的头部信息获得文件类型
注意此方法会读取头部64个bytes,造成此流接下来读取时缺少部分bytes
因此如果想复用此流,流需支持 InputStream.reset()方法。 |
static String |
getType(InputStream in,
String filename,
boolean isExact)
根据文件流的头部信息获得文件类型
注意此方法会读取头部一些bytes,造成此流接下来读取时缺少部分bytes
因此如果想复用此流,流需支持 InputStream.reset()方法。 |
static String |
getType(String fileStreamHexHead)
根据文件流的头部信息获得文件类型
|
static String |
getTypeByPath(String path)
通过路径获得文件类型
|
static String |
getTypeByPath(String path,
boolean isExact)
通过路径获得文件类型
|
static String |
putFileType(String fileStreamHexHead,
String extName)
增加文件类型映射
如果已经存在将覆盖之前的映射 |
static String |
removeFileType(String fileStreamHexHead)
移除文件类型映射
|
public static String putFileType(String fileStreamHexHead, String extName)
fileStreamHexHead - 文件流头部Hex信息extName - 文件扩展名public static String removeFileType(String fileStreamHexHead)
fileStreamHexHead - 文件流头部Hex信息public static String getType(String fileStreamHexHead)
fileStreamHexHead - 文件流头部16进制字符串nullpublic static String getType(InputStream in, int fileHeadSize) throws IORuntimeException
in - 文件流fileHeadSize - 自定义读取文件头部的大小nullIORuntimeException - IO异常public static String getType(InputStream in, boolean isExact) throws IORuntimeException
in - InputStreamisExact - 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配null或未找到为nullIORuntimeException - 读取流引起的异常public static String getType(InputStream in) throws IORuntimeException
in - InputStreamnullIORuntimeException - 读取流引起的异常public static String getType(InputStream in, String filename) throws IORuntimeException
InputStream.reset()方法。
1、无法识别类型默认按照扩展名识别
2、xls、doc、msi头信息无法区分,按照扩展名区分
3、zip可能为docx、xlsx、pptx、jar、war、ofd头信息无法区分,按照扩展名区分
in - InputStreamfilename - 文件名nullIORuntimeException - 读取流引起的异常public static String getType(InputStream in, String filename, boolean isExact) throws IORuntimeException
InputStream.reset()方法。
1、无法识别类型默认按照扩展名识别
2、xls、doc、msi头信息无法区分,按照扩展名区分
3、zip可能为docx、xlsx、pptx、jar、war、ofd头信息无法区分,按照扩展名区分
in - InputStreamfilename - 文件名isExact - 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配nullIORuntimeException - 读取流引起的异常public static String getType(File file, boolean isExact) throws IORuntimeException
1、无法识别类型默认按照扩展名识别
2、xls、doc、msi头信息无法区分,按照扩展名区分
3、zip可能为jar、war头信息无法区分,按照扩展名区分
file - 文件 FileisExact - 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配nullIORuntimeException - 读取文件引起的异常public static String getType(File file) throws IORuntimeException
1、无法识别类型默认按照扩展名识别
2、xls、doc、msi头信息无法区分,按照扩展名区分
3、zip可能为jar、war头信息无法区分,按照扩展名区分
file - 文件 FilenullIORuntimeException - 读取文件引起的异常public static String getTypeByPath(String path, boolean isExact) throws IORuntimeException
path - 路径,绝对路径或相对ClassPath的路径isExact - 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配IORuntimeException - 读取文件引起的异常public static String getTypeByPath(String path) throws IORuntimeException
path - 路径,绝对路径或相对ClassPath的路径IORuntimeException - 读取文件引起的异常Copyright © 2025. All rights reserved.