Magic Number 校验Excel文件(Java)
工作中遇到需要用poi解析导入的Excel文件的case,之前同事写的,我发现他做文件格式校验只是做了文件名后缀的解析。这样会有个问题,就是其他格式的文件是可以修改后缀的,这样就可以通过校验,做解析。虽然也有异常处理,但是我们无法定位到这是因为文件格式不对抛的异常。所以我在网上查了下,发现一个校验方法,就是通过魔数(Magic Number)。最著名的魔数就是平方根倒数算法,雷神之锤:
i = 0x5f3759df - ( i >> 1 );
我也不懂啥意思,先不管。我们平时写代码你在参数里突兀的直接用了字符串或者数字,编辑器提示你这是个魔法值,不规范。比如你算圆面积float r = 3.333; S=r^2*3.14;很明显这个3.14就是个魔数。但这些都跟我接下来写的东西没多少关系。
这里就不写原理了,网上有很多。我只贴出代码吧
util类:
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.util.Objects;import lombok.extern.slf4j.Slf4j;
import org.apache.poi.poifs.filesystem.FileMagic;@Slf4j
public class PoiReadUtil {public static boolean isExcelFile(InputStream is) {boolean result = false;try {FileMagic fileMagic = FileMagic.valueOf(new BufferedInputStream(is));if (Objects.equals(fileMagic, FileMagic.OLE2)|| Objects.equals(fileMagic, FileMagic.OOXML)) {result = true;}} catch (Exception e) {log.error("Exception when check the excel file:", e);return false;}return result;}
}
这篇写的有点水,不过测试过是可用的,像魔数这些概念,在.class字节码文件中也用到过。这里就不做深入探讨。
Magic Number 校验Excel文件(Java)相关推荐
- 利用POI读取excel文件(java)
利用POI读取excel文件(java) 摘要:利用java读取excel文件,读取文件并获取文件中每一个sheet中的值. 一.需要提前导入的包: import java.io.File;impor ...
- java导入、导出Excel文件
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- java excel导入jsp_jsp页面导入excel文件的步骤及配置
上传使用flash插件 需要jquery.uploadify.min.js,uploadify.css,poi-ooxml-3.8-20120326.jar等 jsp页面: margin:010px; ...
- java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽
//autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...
- java写入excel文件poi
java写入excel文件 java写入excel文件poi,支持xlsx与xls,没有文件自动创建 package com.utils;import java.io.File; import jav ...
- JAVA语言实现操作Excel文件
导入excel相关 jar 包 java import jxl.*;import jxl.write.*; 读取Excel文件 javaimport java.io.File; public void ...
- 如何用Apache POI操作Excel文件-----如何用Apache POI 画一个离散图
有的时候,我们需要Excel中的数据,通过一个图画,可视化的表现出来. 那么这个时候,应该如何做呢?现在就借花献佛,以Apache POI自己提供的一个例子为例,给大家演示一下POI的API 如何画图 ...
- java magic number_java的class文件的magic number, cafebabe
java的class文件的前4个字节叫做magic number, 用来识别是否为java的class文件. package pkg; import java.io.File; import java ...
- java excel 导入 加校验_Java 利用POI进行excel文件导入时校验数据,并且追加错误批注...
首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的 private void setpz(Workbook wo ...
最新文章
- Spring使用Quartz配置调度事务
- wxWidgets:测试样品
- 常见的 HTTP 状态代码及原因
- Bootstrap 分页导航的尺寸
- python输出变量地址_Python——变量
- pytorch---之随机种子初始化
- 优先队列的优先级设置法
- 微信小程序报Cannot read property ‘setData‘ of undefined的错误
- opencv美颜磨皮
- JAVA毕设项目宠物店管理系统设计与实现(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)
- matlab中采样点是什么意思,各种采样含义
- ug添加imachining变量_UG变量设置
- 笔记本计算机在桌面显示,笔记本电脑开机后不显示桌面该怎么处理
- Mac 清理垃圾工具 Clean My Mac破解版
- 四位电脑故障诊断卡使用说明
- Deepin系统Beyond Compare下载安装以及无法使用解决办法
- 【无标题】两个路由器不同网段互通
- Python数据分析项目-共享单车骑行数据分析
- 2019年3月WHQL认证最新申请流程
- MonoRail和WebForm,谁是瑞士军刀