博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
判断PDF文件是否相同(通过二进制流判断)
阅读量:6408 次
发布时间:2019-06-23

本文共 1859 字,大约阅读时间需要 6 分钟。

一、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

转载于:https://www.cnblogs.com/wennyjane/p/10277846.html

你可能感兴趣的文章
Unicode转义(\uXXXX)的编码和解码
查看>>
VMware下BT4无法进入图形界面解决办法
查看>>
Power Designer (PD) 由物理数据模型PDM生成数据库脚本时带双引号的问题
查看>>
在django1.2+python2.7环境中使用send_mail发送邮件
查看>>
AWS - RDS
查看>>
“Metro”,移动设备视觉语言的新新人类
查看>>
PHP源代码下载(本代码供初学者使用)
查看>>
Disruptor-NET和内存栅栏
查看>>
Windows平台ipod touch/iphone等共享笔记本无线上网设置大全
查看>>
播放加密DVD
查看>>
分享Silverlight新鲜事 - Silverlight Firestarter全球会议
查看>>
产品设计体会(3013)项目的“敏捷沟通”实践
查看>>
RHEL6.3基本网络配置(1)ifconfig命令
查看>>
网络诊断工具之—路由追踪tracert命令
查看>>
Java模拟HTTP的Get和Post请求(增强)
查看>>
得到INSERT和UPDATE中使用的值
查看>>
SQL2K数据库开发五之表操作管理用户定义的数据类型
查看>>
Exchange Server 2013 OWA IIS重定向
查看>>
Asp.net MVC 示例项目"Suteki.Shop"分析之---ViewData
查看>>
多线程编程(3):线程池ThreadPool
查看>>