java 验证工具类_JAVA工具例大全--文件类型判断工具类

增加文件类型映射

如果已经存在将覆盖之前的映射

*

@param fileStreamHexHead 文件流头部Hex信息

@param extName 文件扩展名

@return 之前已经存在的文件扩展名

*/

public static String putFileType(String fileStreamHexHead, String extName) {

return FILE_TYPE_MAP.put(fileStreamHexHead.toLowerCase(), extName);

}

/**

移除文件类型映射

*

@param fileStreamHexHead 文件流头部Hex信息

@return 移除的文件扩展名

*/

public static String removeFileType(String fileStreamHexHead) {

return FILE_TYPE_MAP.remove(fileStreamHexHead.toLowerCase());

}

/**

根据文件流的头部信息获得文件类型

*

@param fileStreamHexHead 文件流头部16进制字符串

@return 文件类型,未找到为null

*/

public static String getType(String fileStreamHexHead) {

for (EntryfileTypeEntry : FILE_TYPE_MAP.entrySet()) {

if (StrUtil.startWithIgnoreCase(fileStreamHexHead, fileTypeEntry.getKey())) {

return fileTypeEntry.getValue();

}

}

return null;

}

/**

根据文件流的头部信息获得文件类型

*

@param in {@link InputStream}

@return 类型,文件的扩展名,未找到为null

@throws IORuntimeException 读取流引起的异常

*/

public static String getType(InputStream in) throws IORuntimeException {

return getType(IoUtil.readHex28Upper(in));

}

/**

根据文件流的头部信息获得文件类型

*

1、无法识别类型默认按照扩展名识别

2、xls、doc、msi头信息无法区分,按照扩展名区分

3、zip可能为docx、xlsx、pptx、jar、war头信息无法区分,按照扩展名区分

*

@param file 文件 {@link File}

@return 类型,文件的扩展名,未找到为null

@throws IORuntimeException 读取文件引起的异常

*/

public static String getType(File file) throws IORuntimeException {

String typeName;

FileInputStream in = null;

try {

in = IoUtil.toStream(file);

typeName = getType(in);

} finally {

IoUtil.close(in);

}

if (null == typeName) {

// 未成功识别类型,扩展名辅助识别

typeName = FileUtil.extName(file);

} else if ("xls".equals(typeName)) {

// xls、doc、msi的头一样,使用扩展名辅助判断

final String extName = FileUtil.extName(file);

if ("doc".equalsIgnoreCase(extName)) {

typeName = "doc";

} else if ("msi".equalsIgnoreCase(extName)) {

typeName = "msi";

}

} else if ("zip".equals(typeName)) {

// zip可能为docx、xlsx、pptx、jar、war等格式,扩展名辅助判断

final String extName = FileUtil.extName(file);

if ("docx".equalsIgnoreCase(extName)) {

typeName = "docx";

} else if ("xlsx".equalsIgnoreCase(extName)) {

typeName = "xlsx";

} else if ("pptx".equalsIgnoreCase(extName)) {

typeName = "pptx";

} else if ("jar".equalsIgnoreCase(extName)) {

typeName = "jar";

} else if ("war".equalsIgnoreCase(extName)) {

typeName = "war";

}

}

return typeName;

}

/**

通过路径获得文件类型

*

@param path 路径,绝对路径或相对ClassPath的路径

@return 类型

@throws IORuntimeException 读取文件引起的异常

*/

public static String getTypeByPath(String path) throws IORuntimeException {

return getType(FileUtil.file(path));

}

}

```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值