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

本文共 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

你可能感兴趣的文章
我的友情链接
查看>>
HDU-1166敌兵布阵
查看>>
LINUX REDHAT第一单元练习题
查看>>
shell实现多级菜单脚本编写
查看>>
Lua1.1 虚拟机指令分析
查看>>
R语言编程艺术(4)R对数据、文件、字符串以及图形的处理
查看>>
shell之RDS备份+判断是否传输完成
查看>>
Shell获取当前主机ip地址
查看>>
init : Failed to spawn readahead-collector main process :unable to execute ...
查看>>
Saltstack安装 (CentOS7.x)
查看>>
Python学习记录-2016-01-16
查看>>
我的友情链接
查看>>
决心书
查看>>
如何从本地把项目上传到github
查看>>
Exception sending context initialized event to lis
查看>>
IPSec ***基于ASA的配置实现
查看>>
Spring Boot 注解大全
查看>>
洞悉物联网发展1000问之为什么物联网项目很难融资?
查看>>
Elasticsearch集成HanLP分词器
查看>>
Activate List v3
查看>>