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进制字符串null
public static String getType(InputStream in, int fileHeadSize) throws IORuntimeException
in
- 文件流fileHeadSize
- 自定义读取文件头部的大小null
IORuntimeException
- IO异常public static String getType(InputStream in, boolean isExact) throws IORuntimeException
in
- InputStream
isExact
- 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配null
或未找到为null
IORuntimeException
- 读取流引起的异常public static String getType(InputStream in) throws IORuntimeException
in
- InputStream
null
IORuntimeException
- 读取流引起的异常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
- InputStream
filename
- 文件名null
IORuntimeException
- 读取流引起的异常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
- InputStream
filename
- 文件名isExact
- 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配null
IORuntimeException
- 读取流引起的异常public static String getType(File file, boolean isExact) throws IORuntimeException
1、无法识别类型默认按照扩展名识别 2、xls、doc、msi头信息无法区分,按照扩展名区分 3、zip可能为jar、war头信息无法区分,按照扩展名区分
file
- 文件 File
isExact
- 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配null
IORuntimeException
- 读取文件引起的异常public static String getType(File file) throws IORuntimeException
1、无法识别类型默认按照扩展名识别 2、xls、doc、msi头信息无法区分,按照扩展名区分 3、zip可能为jar、war头信息无法区分,按照扩展名区分
file
- 文件 File
null
IORuntimeException
- 读取文件引起的异常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.