判断PDF文件是否相同(通过二进制流判断)
一、Java代码
1、将PDF转为字节流
/*
* @step
* 1.使用BufferedInputStream和FileInputStream从File指定的文件中读取内容;
* 2.然后建立写入到ByteArrayOutputStream底层输出流对象的缓冲输出流BufferedOutputStream
* 3.底层输出流转换成字节数组,
*/
public static byte[] getPDFBinary(String fileName)
{
//字节输入流
FileInputStream fin = null;
//字节输入缓冲流:先从磁盘中将要读取的内容放入到内存中,再一次性从内存中取出来,避免了读一段取一段
BufferedInputStream bin = null;
//字节输出缓冲流:先将要输出的内容放入到内存中,再一次性全都输出。
BufferedOutputStream bout = null;
//字节数组输出流,将字节数据写入到字节数组中
ByteArrayOutputStream baos = null;
try
{
//建立读取文件的文件输出流
fin = new FileInputStream(fileName);
//在文件流上安装节点流(更大效率读取)
bin = new BufferedInputStream(fin);
//创建一个新的byte数组输出流,它具有指定大小的缓冲区容量
baos = new ByteArrayOutputStream();
//创建一个新的缓冲输出流,将以数据写入指定的底层出入流
bout = new BufferedOutputStream(baos);
byte[] buffer = new byte[2048];
int len = bin.read(buffer);
while(len != -1)
{
//void write(byte[] b, int off, int len)
//将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流
bout.write(buffer,0,len);
len = bin.read(buffer);
}
//刷新此输出流,并强制写出所有缓冲的输出字节
bout.flush();
byte[] bytes = baos.toByteArray();
return bytes;
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}finally {
try{
fin.close();
bin.close();
//关闭 ByteArrayOutputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException
//baos.close();
bout.close();
}
catch(IOException e)
{
e.printStackTrace();
}
}
return null;
}
2、比较两个数组是否相同(两个PDF文件转为字节数组)
Arrays.equals(bytesA,bytesE);
二、C#
1、将PDF转为字节流
public static byte[] GetBinary(String filePath)
{
//读取文件
FileStream stream = new FileInfo(filePath).OpenRead();
byte[] buffer = new byte[stream.Length];
//从流中读取字节块并将该数据写入给定缓冲区中
stream.Read(buffer,0,Convert.ToInt32(stream.Length));
stream.Close();
return buffer;
}
2、比较两个数组是否相同(两个PDF文件转为字节数组)
Enumerable.SequenceEqual(byte1,byte2);
参考:https://blog.csdn.net/congcongsuiyue/article/details/39964119
判断PDF文件是否相同(通过二进制流判断)的更多相关文章
- 判断pdf文件是否正常可用
之前在下载港交所的文件的时候会碰到有些文件异常的情况,文件下载下来,但是不能打开.查到其他的方法不是判断错误就是很麻烦. 整理出一个非常简单的方法,将文件以二进制方式打开,然后判断文件的开头是否符 ...
- PHP多重判断删除文件函数
<?function delete_file($file) { if (file_exists($file)) { $delete = chmod ($file, ...
- 前端axios请求二进制数据流转换生成PDF文件空白问题(终极解决方案)
本文章共1570字,预计阅读时间1 - 3分钟. 问题场景: axios请求二进制数据转换生成PDF空白问题,使用axios请求后端接口,后端返回的二进制流文件,需要转换成PDF,但是在postman ...
- pdf文件流生成pdf文件
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Code.Login Starr_mode ...
- c#中文件与二进制流文件的转换
将文件转换成二进制方法: /// <summary> /// 将文件转换成二进制 /// </summary> /// <param name=&quo ...
- ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
写在前面 :从提出需求到完美的解决问题,实现过程是曲折的. 需求:在前(web client)后(Restful Service)端完全解耦的模式框架下,webclient需要请求 Service 返 ...
- 文件操作总结:关于文本和二进制流(typeText&typeBinary)
本人能力.精力有限,所言所感都基于自身的实践和有限的阅读.查阅,如有错误,欢迎拍砖,敬请赐教——博客园:钱智慧. 总结: CFile,其自身是不提供缓冲区的(?但CFile又有一个Flush,这一点目 ...
- 判断pdf、word文档、图片等文件类型(格式)、大小的简便方法
判断pdf.word文档.图片等文件类型(格式).大小的简便方法 很久没发文了,今天有时间就写一下吧. 关于上传文件,通常我们都需要对其进行判断,限制上传的类型,如果是上传图片,我们甚至会把图片转化成 ...
- php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现
php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现 function data_uri($contents, $mime) { $base64 = base64_encode($c ...
随机推荐
- [经验共享] MapGIS实用小功能图解——由excel文件导成MapGIS点文件
项目小组的几个成员都是学地下水和环境的,对于GIS懂得不是很多,于是把一些我们经常用到的mapgis实用小功能做成帮助文档,方便大家使用,发布共享! 1.整理好EXCEL文件(注意X,Y坐标的正确性( ...
- laravel 核心类Kernel
vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php.是laravel处理网络请求的最核心类,在app容器准备好了之后, ...
- 中文编码错误,Error output could not be translated from the native locale to UTF-8.
假如使用http访问仓库,用户配置的pre-commit钩子里面如果有中文,可能会出现"Error output could not be translated from the nativ ...
- ABP入门系列之2——ABP模板项目
进入官网下载模板项目 依次按下图选择: 输入验证码开始下载 下载提示: 二.启动项目 使用VS2017打开项目,还原Nuget包: 设置以Web结尾的项目,设置为启动项目: 打开Web.config, ...
- mysql批量导出单结构与结构数据表脚本
由于一个库里面不需要导出全部, 只需要导出一部分指定的数据表结构与数据 那么就写了一个比较简单而且为了能偷懒的小shell #!/bin/bash #************************* ...
- 基于CentOS安装FTP服务器
操作系统环境: CentOS Linux release 7.4.1708 (Core) 使用yum安装ftp服务: yum install -y vsftpd 添加系统用户作为登录ftp服务器并修改 ...
- 给COCO数据集的json标签换行
#include <iostream> #include <fstream> #include <string> #include <vector> u ...
- webapi 下载Ftp文件并返回流到浏览器完成文件下载
ResultModel<HttpResponseMessage> resultModel = new ResultModel<HttpResponseMessage>(Resu ...
- win10配置java开发环境
安装java(JDK) Oracle官网下载地址 选择JavaSE > Downloads 选择最新版本 > Download Accept License Agreement 选择要下载 ...
- win10 开机自启指定软件
开机自启 %programdata%\Microsoft\Windows\Start Menu\Programs\StartUp