一、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文件是否相同(通过二进制流判断)的更多相关文章

  1. 判断pdf文件是否正常可用

    之前在下载港交所的文件的时候会碰到有些文件异常的情况,文件下载下来,但是不能打开.查到其他的方法不是判断错误就是很麻烦.   整理出一个非常简单的方法,将文件以二进制方式打开,然后判断文件的开头是否符 ...

  2. PHP多重判断删除文件函数

    <?function delete_file($file) {     if (file_exists($file))     {         $delete = chmod ($file, ...

  3. 前端axios请求二进制数据流转换生成PDF文件空白问题(终极解决方案)

    本文章共1570字,预计阅读时间1 - 3分钟. 问题场景: axios请求二进制数据转换生成PDF空白问题,使用axios请求后端接口,后端返回的二进制流文件,需要转换成PDF,但是在postman ...

  4. pdf文件流生成pdf文件

    protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { Code.Login Starr_mode ...

  5. c#中文件与二进制流文件的转换

    将文件转换成二进制方法: /// <summary>    /// 将文件转换成二进制    /// </summary>    /// <param name=&quo ...

  6. ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践

    写在前面 :从提出需求到完美的解决问题,实现过程是曲折的. 需求:在前(web client)后(Restful Service)端完全解耦的模式框架下,webclient需要请求 Service 返 ...

  7. 文件操作总结:关于文本和二进制流(typeText&typeBinary)

    本人能力.精力有限,所言所感都基于自身的实践和有限的阅读.查阅,如有错误,欢迎拍砖,敬请赐教——博客园:钱智慧. 总结: CFile,其自身是不提供缓冲区的(?但CFile又有一个Flush,这一点目 ...

  8. 判断pdf、word文档、图片等文件类型(格式)、大小的简便方法

    判断pdf.word文档.图片等文件类型(格式).大小的简便方法 很久没发文了,今天有时间就写一下吧. 关于上传文件,通常我们都需要对其进行判断,限制上传的类型,如果是上传图片,我们甚至会把图片转化成 ...

  9. php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现

    php从数据库中取二进制流文件转换为图片,图片以二进制流存入数据库实现 function data_uri($contents, $mime) { $base64 = base64_encode($c ...

随机推荐

  1. Unityd外发光Shader Lab

    Shader "Faye/OutLightting" { Properties { _MainTex("Texture (RGB)", 2D) = " ...

  2. textbox 未

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  3. React 列表页面传递参数

    React 列表进入详情页面 首先安装 react-router-dom (4.0) npm/yarn install react-router-dom 路由跳转配置 列表 父组件 this.prop ...

  4. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  5. appium+夜神+python3 环境配置

    先感慨一下真的心累啊,踩了好多坑,断断续续四天终于把环境彻底搭建完了,由于之前看的网上的帖子都不是很全而且还带坑,决定自己写一篇综述,作为笔记. 一,首先是安装需要的环境: 需要用到的软件: 1. j ...

  6. 【js】了解前端缓存,收获不止于此!

    了解前端缓存,收获不止于此! 这次我们来讲一下关于前端缓存的问题.感谢赵欢同学提供doc素材. 首先,开局我画了一张图,你会对文章有一个大局了解. 今天讲的是前端缓存. 前端缓存有3大种:如图,分为H ...

  7. redis缓存数据库

    redis 介绍 redis是业界主流的key-value nosql 数据库之一.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set( ...

  8. python数据类型:字典dict常用操作

    字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的: Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的. Value:任意数据(int,str,boo ...

  9. 一键git push脚本(python版)

    #!/usr/bin/env python import os import subprocess import sys import time gitconfig = { 'cwd': './blo ...

  10. css3常用动效以及总结

    (迁移自旧博客2017 08 06) CSS3 文本效果: box-shadow:盒子阴影,可以给卡片添加提高美化效果.可广泛应用于内容展示页面. <div class="card&q ...