Package org.miaixz.bus.core.io.file
Class FileType
java.lang.Object
org.miaixz.bus.core.io.file.FileType
文件类型判断工具类
此工具根据文件的前几位bytes猜测文件类型,对于文本、zip判断不准确,对于视频、图片类型判断准确
需要注意的是,xlsx、docx等Office2007格式,全部识别为zip,因为新版采用了OpenXML格式,这些格式本质上是XML文件打包为zip
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringClass文件扩展名static final StringJar文件扩展名static final String在Jar中的路径jar的扩展名形式static final Stringbmp格式static final Stringcsv格式static final Stringdcm格式static final String微软word文档static final Stringstatic final Stringgif格式static final Stringjpeg格式static final Stringjpg格式static final Stringpdf格式static final Stringpng格式static final Stringstatic final Stringstatic final String微软ppt文档static final Stringstatic final Stringpsd格式,Photoshop的专用格式Photoshopstatic final Stringsvg格式static final Stringtxt格式static final String微软excel文档static final Stringstatic final StringXML格式 -
Method Summary
Modifier and TypeMethodDescriptionstatic String根据文件流的头部信息获得文件类型static String根据文件流的头部信息获得文件类型static StringgetType(InputStream in) 根据文件流的头部信息获得文件类型 注意此方法会读取头部64个bytes,造成此流接下来读取时缺少部分bytes 因此如果想复用此流,流需支持InputStream.reset()方法。static StringgetType(InputStream in, boolean isExact) 根据文件流的头部信息获得文件类型 注意此方法会读取头部一些bytes,造成此流接下来读取时缺少部分bytes 因此如果想复用此流,流需支持InputStream.reset()方法。static StringgetType(InputStream in, int fileHeadSize) 根据文件流的头部信息获得文件类型static StringgetType(InputStream in, String filename) 根据文件流的头部信息获得文件类型 注意此方法会读取头部64个bytes,造成此流接下来读取时缺少部分bytes 因此如果想复用此流,流需支持InputStream.reset()方法。static StringgetType(InputStream in, String filename, boolean isExact) 根据文件流的头部信息获得文件类型 注意此方法会读取头部一些bytes,造成此流接下来读取时缺少部分bytes 因此如果想复用此流,流需支持InputStream.reset()方法。static String根据文件流的头部信息获得文件类型static StringgetTypeByPath(String path) 通过路径获得文件类型static StringgetTypeByPath(String path, boolean isExact) 通过路径获得文件类型static StringputFileType(String fileStreamHexHead, String extName) 增加文件类型映射 如果已经存在将覆盖之前的映射static StringremoveFileType(String fileStreamHexHead) 移除文件类型映射
-
Field Details
-
CLASS
Class文件扩展名- See Also:
-
JAR
Jar文件扩展名- See Also:
-
JAR_PATH_EXT
在Jar中的路径jar的扩展名形式- See Also:
-
TYPE_XLS
微软excel文档- See Also:
-
TYPE_XLSX
- See Also:
-
TYPE_DOC
微软word文档- See Also:
-
TYPE_DOCX
- See Also:
-
TYPE_PPT
微软ppt文档- See Also:
-
TYPE_PPTX
- See Also:
-
TYPE_PPS
- See Also:
-
TYPE_PPSX
- See Also:
-
TYPE_XML
XML格式- See Also:
-
TYPE_PSD
psd格式,Photoshop的专用格式Photoshop- See Also:
-
TYPE_GIF
gif格式- See Also:
-
TYPE_JPG
jpg格式- See Also:
-
TYPE_JPEG
jpeg格式- See Also:
-
TYPE_BMP
bmp格式- See Also:
-
TYPE_PNG
png格式- See Also:
-
TYPE_CSV
csv格式- See Also:
-
TYPE_PDF
pdf格式- See Also:
-
TYPE_DCM
dcm格式- See Also:
-
TYPE_SVG
svg格式- See Also:
-
TYPE_TXT
txt格式- See Also:
-
FILE_TYPE
-
-
Method Details
-
putFileType
增加文件类型映射 如果已经存在将覆盖之前的映射- Parameters:
fileStreamHexHead- 文件流头部Hex信息extName- 文件扩展名- Returns:
- 之前已经存在的文件扩展名
-
removeFileType
移除文件类型映射- Parameters:
fileStreamHexHead- 文件流头部Hex信息- Returns:
- 移除的文件扩展名
-
getType
根据文件流的头部信息获得文件类型- Parameters:
fileStreamHexHead- 文件流头部16进制字符串- Returns:
- 文件类型,未找到为
null
-
getType
根据文件流的头部信息获得文件类型- Parameters:
in- 文件流fileHeadSize- 自定义读取文件头部的大小- Returns:
- 文件类型,未找到为
null - Throws:
InternalException- IO异常
-
getType
根据文件流的头部信息获得文件类型 注意此方法会读取头部一些bytes,造成此流接下来读取时缺少部分bytes 因此如果想复用此流,流需支持InputStream.reset()方法。- Parameters:
in-InputStreamisExact- 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配- Returns:
- 类型,文件的扩展名,in为
null或未找到为null - Throws:
InternalException- 读取流引起的异常
-
getType
根据文件流的头部信息获得文件类型 注意此方法会读取头部64个bytes,造成此流接下来读取时缺少部分bytes 因此如果想复用此流,流需支持InputStream.reset()方法。- Parameters:
in-InputStream- Returns:
- 类型,文件的扩展名,未找到为
null - Throws:
InternalException- 读取流引起的异常
-
getType
根据文件流的头部信息获得文件类型 注意此方法会读取头部64个bytes,造成此流接下来读取时缺少部分bytes 因此如果想复用此流,流需支持InputStream.reset()方法。1、无法识别类型默认按照扩展名识别 2、xls、doc、msi头信息无法区分,按照扩展名区分 3、zip可能为docx、xlsx、pptx、jar、war、ofd头信息无法区分,按照扩展名区分- Parameters:
in-InputStreamfilename- 文件名- Returns:
- 类型,文件的扩展名,未找到为
null - Throws:
InternalException- 读取流引起的异常
-
getType
public static String getType(InputStream in, String filename, boolean isExact) throws InternalException 根据文件流的头部信息获得文件类型 注意此方法会读取头部一些bytes,造成此流接下来读取时缺少部分bytes 因此如果想复用此流,流需支持InputStream.reset()方法。1、无法识别类型默认按照扩展名识别 2、xls、doc、msi头信息无法区分,按照扩展名区分 3、zip可能为docx、xlsx、pptx、jar、war、ofd头信息无法区分,按照扩展名区分- Parameters:
in-InputStreamfilename- 文件名isExact- 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配- Returns:
- 类型,文件的扩展名,未找到为
null - Throws:
InternalException- 读取流引起的异常
-
getType
根据文件流的头部信息获得文件类型1、无法识别类型默认按照扩展名识别 2、xls、doc、msi头信息无法区分,按照扩展名区分 3、zip可能为jar、war头信息无法区分,按照扩展名区分- Parameters:
file- 文件FileisExact- 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配- Returns:
- 类型,文件的扩展名,未找到为
null - Throws:
InternalException- 读取文件引起的异常
-
getType
根据文件流的头部信息获得文件类型1、无法识别类型默认按照扩展名识别 2、xls、doc、msi头信息无法区分,按照扩展名区分 3、zip可能为jar、war头信息无法区分,按照扩展名区分- Parameters:
file- 文件File- Returns:
- 类型,文件的扩展名,未找到为
null - Throws:
InternalException- 读取文件引起的异常
-
getTypeByPath
通过路径获得文件类型- Parameters:
path- 路径,绝对路径或相对ClassPath的路径isExact- 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配- Returns:
- 类型
- Throws:
InternalException- 读取文件引起的异常
-
getTypeByPath
通过路径获得文件类型- Parameters:
path- 路径,绝对路径或相对ClassPath的路径- Returns:
- 类型
- Throws:
InternalException- 读取文件引起的异常
-