知识点:对输入流,输出流的应用

package yichanglei4;
import java.io.*;
import java.util.Arrays;public class str {public static void main(String[] args) {// TODO Auto-generated method stub
//分解File f1=new File("D:\\pdf","李航.统计学习方法.pdf");//确定要分解的文档long L1;int num=0,i=0,n=0;int zijie=1024*1024*5;//分解成5M大小的pdf文档L1=f1.length();byte[]a = new byte[(int)L1];byte[]b;if(L1%zijie==0)num=(int)L1/zijie;//判断可以分解为几个5M大小的文档elsenum=(int)L1/zijie+1;//不足加一try{FileInputStream in=new FileInputStream(f1);//该语句可能会出现错误,                                           in.read(a);    //对目标文件进行读入         //所以应在try语句中in.close();for(i=0;i<num;i++){String name=i+1+"-"+"李航.统计学习方法.pdf";if(i!=num-1){b=new byte[zijie];     //对输出字节数组大小进行定义            b=Arrays.copyOfRange(a,i*zijie,(i+1)*zijie);//复制数组a中该字节数组}                                           //大小的值else{b=new byte[(int)(L1-(i-1)*zijie)];b=Arrays.copyOfRange(a,i*zijie,(int)L1);}File f2=new File("D:\\splitpdf",name);FileOutputStream  out=new  FileOutputStream(f2);//定义输出流out.write(b);                //进行字节数组输出out.close();}}catch(IOException e1){System.out.println(e1);}
//合成File f3=new File("D:\\splitpdf");File []splitfile=f3.listFiles();         //该方法返回在f3文件夹下的文件File f4=new File("D:\\splitpdf","new李航.统计学习方法.pdf");int t=0;int sumlength=0;for(File f5:splitfile){System.out.println(f5.getName());System.out.println((int)f5.length());sumlength+=(int)f5.length();}try {FileOutputStream  sumout=new  FileOutputStream(f4);for(File f5:splitfile) {       //遍历每一个被分解的文档byte d[]=new byte[(int)f5.length()];FileInputStream sumin=new FileInputStream(f5);sumin.read(d);       //读入sumout.write(d);     //写入sumin.close();}sumout.close();}catch(Exception e2){System.out.println(e2);}}}

结果:

对于合成的步骤:

我个人的方法(虽然可以进行文档的和成但是无法对文档重新打开)不同于上面的方法

附上个人代码(虽然和上面大致思路相同)

我的合成过程是分解过程的逆过程

(找到了问题所在,但不知道为什么f4的创建会有大小)

package yichanglei4;
import java.io.*;
import java.util.Arrays;public class str {public static void main(String[] args) {// TODO Auto-generated method stub
//分解File f1=new File("D:\\pdf","李航.统计学习方法.pdf");long L1;int num=0,i=0,n=0;int zijie=1024*1024*5;L1=f1.length();byte[]a = new byte[(int)L1];;byte[]b;if(L1%zijie==0)num=(int)L1/zijie;elsenum=(int)L1/zijie+1;try{FileInputStream in=new FileInputStream(f1);in.read(a);in.close();for(i=0;i<num;i++){String name=i+1+"-"+"李航.统计学习方法.pdf";if(i!=num-1){b=new byte[zijie];b=Arrays.copyOfRange(a,i*zijie,(i+1)*zijie);}else{b=new byte[(int)(L1-(i-1)*zijie)];b=Arrays.copyOfRange(a,i*zijie,(int)L1);}File f2=new File("D:\\splitpdf",name);FileOutputStream  out=new  FileOutputStream(f2);out.write(b);out.close();}}catch(IOException e1){System.out.println(e1);}
//合成 File f3=new File("D:\\splitpdf");File []splitfile=f3.listFiles();File f4=new File("D:\\splitpdf","new李航.统计学习方法.pdf");int t=0;for(File f5:splitfile)     //问题在于遍历每个f5的大小(注意f4为什么会有大小){byte c[] = new byte[(int)f5.length()];byte d[]=new byte[(int)L1];   //数组大小不够try {FileInputStream sumin=new FileInputStream(f5);sumin.read(c);sumin.close();}catch(Exception e2){System.out.println(e2);}int L2=0;System.arraycopy(c, 0, d, L2, (int)f5.length());L2+=(int)f5.length();try {FileOutputStream  sumout=new  FileOutputStream(f4);sumout.write(d);sumout.close();}catch(Exception e3){System.out.println(e3);}}}}

使用java对pdf文档进行分解和合成相关推荐

  1. Java在PDF文档中添加或删除页面

    前言 当你编辑一个PDF文档时,有时需要删除文档中多余的页面或向文档中添加新的页面.本文将向您演示如何使用Spire.PDF for Java在PDF文档中添加或删除页面. 程序环境 安装Spire. ...

  2. java生成pdf方法_详解Java生成PDF文档方法|chu

    最近项目需要实现PDF下载的功能,由于没有这方面的经验,从网上花了很长时间才找到相关的资料.整理之后,发现有如下几个框架可以实现这个功能. 1. 开源框架支持iText,生成PDF文档,还支持将XML ...

  3. java jar 打印_三种Java打印PDF文档的实例代码

    以下内容归纳了通过Java程序打印PDF文档时的3种情形.即: 1 静默打印 2 显示打印对话框打印 3 打印PDF时自定义纸张大小 使用工具:Spire.PDF for Java Jar文件获取及导 ...

  4. 【教程】如何使用Java生成PDF文档?

    在如今数字化时代,越来越多的人使用PDF文档进行信息传递和共享.而使用Java生成PDF文档也成为了一个非常重要的技能,因为Java作为一种通用的编程语言,可以在不同的操作系统和平台上运行.下面,我们 ...

  5. Java 处理PDF文档(一):页眉页脚、水印、背景、附件

    前言 本文将介绍通过Java编程来处理PDF文档的一些方法,因为一篇文档的处理可能包括很多内容,比如文档安全性设置(水印.加密/解密).文本/图片/图形操作.注释.附件.域.文档转换(其他文件格式转为 ...

  6. Java生成PDF文档(表格)

    Java生成PDF文档(表格) package org.jeecg.modules.esi.utils;import com.itextpdf.text.*; import com.itextpdf. ...

  7. Java 给PDF文档设置背景颜色和背景图片

    如题,这篇文章主要介绍如何在Java应用程序中给PDF文档设置背景颜色和背景图片. 使用组件: Spire.PDF for Java 下载Spire.PDF for JAVA包并解压缩,然后从lib文 ...

  8. Java 拆分PDF文档

    这篇文章主要介绍以下两种拆分方式: 将一个PDF文档快速拆分为多个PDF(每个PDF包含1页) 根据指定页码范围,将一个PDF文档拆分为2个或多个PDF(每个PDF可以包含不同的页数) 使用组件: S ...

  9. Java 压缩PDF文档

    PDF文档是我们日常办公中使用最频繁的文档格式.但因为大多数PDF文档都包含很多页面图像或大量图片,这就导致PDF文档过大,在传输或者下载过程中速度会变慢,也会增加传输失败的风险,影响办公效率.因此我 ...

  10. Java 设置PDF文档过期时间(有效时间)

    有些文档具有一定时效性,需在规定时间段内才可阅读查看,针对此类文档,需要设置文档的过期日期.时间等.下面以Java示例演示为例如何给PDF文档设置过期时间.需使用PDF类库, Free Spire.P ...

最新文章

  1. Nginx学习之五:Nginx第三方模块
  2. JVM的内存结构,Eden和Survivor比例;JVM中一次完整的GC流程,对象如何晋升到老年代,说说你知道的几种主要的JVM参数;CMS 常见参数解析;.你知道哪几种垃圾收集器,各自的优缺点
  3. qMISPlat入门级使用问题解答一
  4. wxpython 表格粘贴,wxpython在整个应用程序中剪切复制和粘贴
  5. fuser命令使用说明
  6. Docker系列(一)什么是Docker
  7. 接了几个APP逆向的私活,赚爆了!
  8. html添加桌面背景图片代码,背景图片加文字代码. 用HTML制作表格
  9. 无人机动力组装与测试-电机、螺旋桨、电调、电池
  10. error C4716 必须返回一个值 处理
  11. 电子计算机X线体层摄影,X线计算机体层摄影.pdf
  12. 划分子网(计算机网络)
  13. 福特汉姆大学计算机科学专业,福特汉姆大学研究生学院
  14. python——田字格
  15. 递归算法_字符串反转_20230412
  16. A problem has occurred and the system can‘t recover问题的解决
  17. 付鼻窦瓦氏位与付鼻窦柯氏位区别
  18. 百度搜索引擎爬行蜘蛛IP大全
  19. 最全Mac系统快捷键一览 学会了一秒变大神!
  20. 金融科技大数据产品推荐: 换汇API/海外支付API——让跨境支付更简单

热门文章

  1. 阿里云对象存储OSS收费标准(很详细一看就懂)
  2. gcc: libc: __ASSEMBLER__; Kernel: __ASSEMBLY__
  3. 破解封杀ADSL路由器解决办法全面剖析
  4. 观察者模式和模拟wow插件的例子
  5. 什么是噪声,白噪声,加性噪声,乘性噪声
  6. 苹果pencil和普通的有什么区别?推荐好用的平替笔
  7. 算法时间复杂度Θ(n2)与 O(n2)
  8. Camtasia如何给视频或者图片调色
  9. Windows 10内置Hyper-V虚拟机安装XP系统(二) - 配置网络
  10. 捡到的苹果手机怎么解id锁_苹果手机软解和硬解的区别