精华内容
下载资源
问答
  • Java文件读写的常用技术——项目开发实战篇一、 概述:本文主要以Office办公软件和PDF文件读写为主线逐步展开说明,分析将相关格式的文件内容文本化的过程。另外针对于Excel文件内容的结构化和对象化进行实际案例...

    Java文件读写的常用技术——项目开发实战篇

    一、 概述:

    本文主要以Office办公软件和PDF文件的读写为主线逐步展开说明,分析将相关格式的文件内容文本化的过程。另外针对于Excel文件内容的结构化和对象化进行实际案例分析,给出更适应Spring框架配置的解决方案。

    POI基本介绍:

    1、 POI基本描述:

    POI是用编写的免费开源且跨平台的Java API,Apache POI提供API给Java程式对格式档案读和写的功能。POI为"Poor Obfuscation Implementation"的首字母缩写,直译为"可怜的模糊实现",或意为"简洁版的模糊实现"。

    .NET的开发人员则可以利用NPOI(POI for .NET)来存取Microsoft Office文档的功能。

    2、 POI需要的Jar包:

    a) poi-3.10-Final.jar(用于xls);

    b) poi-ooxml-3.10-Final.jar(用于xlsx);

    c) poi-ooxml-schemas-3.10.jar;

    d) xmlbeans-2.6.0.jar

    e) dom4j-1.6.1.jar

    f) poi-scratchpad-3.10-FINAL-20140208.jar(用于word,ppt)

    3、 POI结构说明(包名称说明):

    a) HSSF:提供读写Microsoft Excel XLS格式档案的功能;

    b) XSSF:提供读写Microsoft Excel OOXML XLSX格式档案的功能;

    c) HWPF:提供读写Microsoft Word DOC格式档案的功能;

    d) HSLF:提供读写Microsoft PowerPoint格式档案的功能;

    e) HDGF:提供读Microsoft Visio格式档案的功能;

    f) HPBF:提供读Microsoft Publisher格式档案的功能;

    g) HSMF:提供读Microsoft Outlook格式档案的功能;

    三、 PDF基本介绍:

    1、 摘要:

    自从Adobe公司1993年第一次发布公共PDF参考以来,支持各种语言和平台的PDF工具和类库就如雨后春笋般涌现。然而,Java应用开发中Adobe技术的支持相对滞后了。

    自从Adobe公司1993年第一次发布公共PDF参考以来,支持各种语言和平台的PDF工具和类库就如雨后春笋般涌现。然而,Java应用开发中Adobe技术的支持相对滞后了。这是个奇怪的现象,因为PDF文档是企业信息系统存储和交换信息的大势所趋,而Java技术特别适合这种应用。然而,Java开发人员似乎直到最近才获得成熟可用的PDF支持。

    2、 特性:

    PDFBox(一个BSD许可下的源码开放项目)是一个为开发人员读取和创建PDF文档而准备的纯Java类库。它提供如下特性:

    a) 提取文本,包括Unicode字符;

    b) 和Jakarta Lucene等文本搜索引擎的整合过程十分简单;

    c) 加密/解密PDF文档;

    d) 从PDF和XFDF格式中导入导出相关表单数据;

    e) 向已有PDF文档中追加内容;

    f) 将一个PDF文档切分为多个文档;

    g) 覆盖PDF文档;

    3、 PDFBox API:

    PDFBox设计时采用面向对象的方式来描述PDF文档。PDF文档的数据是一系列基本对象的集合:数组,布尔型,字典,数字,字符串和二进制流。PDFBox在org.pdfbox.cos包(COS模型)中定义这些基本对象类型。你可以使用这些对象与PDF文档进行任何交互,但你应该先对PDF文档内部结构以及高层概念作一些深入的了解。例如,页面和字体都是带有特殊属性的字典对象;PDF参考手册提供这些特殊属性的含义和类型的说明,但这是一个枯燥的文档查阅过程。

    于是,org.pdfbox.pdfmodel包(PD模型)应运而生,它的基础是COS模型,但提供了以一种熟悉的方式访问PDF文档对象的高层API。对底层COS模型进行了封装的PDPage和PDFont等类就在这个包中。

    注意:虽然PD模型提供了一些优秀的功能,但它依然是一个开发中的模型。在有些实例中,你可能需要借助于COS模型才能访问PDF的特定功能性。所有的PD模型对象都提供返回相应的COS模型对象的方法。所以,在一般情况下,你都会使用PD模型,但PD模型鞭长莫及时你可以直接操作底层的COS模型。

    4、 PDF需要的Jar包:

    a) pdfbox-1.7.1.jar;

    b) fontbox-1.7.1.jar;

    四、 各种文件的处理方式:

    1、 Excel文件:

    示例代码:

    e9cff3089b41862bc98d338737308d96.png

    ExcelTextParser

    2、 Word文件:

    示例代码:

    b1d25e8f2a0825a1efd61457da171062.png

    WordParser

    3、 PPT文件:

    示例代码:

    c9cb31beb318551dfc6675a07edda617.png

    PPTParser

    4、 Visio文件:

    示例代码:

    9ba8cb270cacf04009aa20d3f5b8ff1f.png

    VisioParser

    5、 Pdf文件:

    示例代码:

    7cfabd32258a8d1ef45f03c03a8bf6c8.png

    PdfParser

    五、 案例分析讲解:

    1、 设计说明:

    以Excel文件的不同文件格式读写为例进行分析。

    a) 针对于文件格式的设计:

    i. XLS和XLSX:

    虽然XLS是使用HSSFWorkbook,而XLSX是使用XSSFWorkbook,但针对于sheet的处理是一致的,因此使用同一个类进行处理。另外将针对于每行数据的处理单独抽取为一个类,简化代码逻辑,明确代码层次关系;

    ii. CSV:

    以纯文本形式存储表格数据的,因此单独创建一个类进行处理。注意:将分隔符(默认是英文逗号)和数据起始行号单独保存单独的私有成员变量中,以保证代码的通用性;

    b) 针对于代码结构的设计:

    使用接口将对象整合,以便在注入时可以使用同一个对象实例化。

    2、 类图:

    dd36572dfd4db0baddeeafeb7b5d5e1b.png

    PowerDesigner类图

    3、 Spring配置:

    81952e11cfb1fe16619b5f1726c50744.png

    Spring配置

    4、 各个类的具体情况:

    a) IParser:

    5805a1ba2c970f0d7ead4d54eebb1c60.png

    IParser

    b) ExcelParser:

    6d1bb5cb48671427de34f1abcb9d0194.png

    ExcelParser

    c) CsvParser:

    1ae829e318a430d154d7697a41ca467d.png

    CsvParser

    d) RowParser:

    34a53b5aa46efbc94a420e474102040d.png

    RowParser

    展开全文
  • JAVA流式输入输出与文件处理流式输入输出与文件处理实验目的(1) 掌握字节和字符的特点和处理差异;(2) 掌握过滤的使用;(3) 掌握File类的使用;(4) 掌握随机文件的使用。(5) 掌握对象系列化的概念以及访问文件...

    JAVA流式输入输出与文件处理

    流式输入输出与文件处理

    实验目的

    (1) 掌握字节流和字符流的特点和处理差异;

    (2) 掌握过滤流的使用;

    (3) 掌握File类的使用;

    (4) 掌握随机文件的使用。

    (5) 掌握对象系列化的概念以及访问文件时对象读写方法。

    知识要点

    1 面向字节的输入/输出流

    (1)类InputStream是面向字节的输入流的根。其主要方法见表13-1。

    表13-1 类InputStream 的方法

    方法 功能

    int read() 读一个字节

    int read(byte b[]) 读多个字节到字节数组

    int read(byte[] b, int off, 读指定长度的数据到字节数组,数据从字节数组

    int len) 的off处开始存放

    Long skip(long n) 输入指针跳过n个字节

    Void mark() 在当前指针位置处做一标记

    Void reset() 将位置指针返回标记处

    Void close() 关闭流

    (2) 数据过滤流DataInputStream

    该流实现DataInput接口,主要方法有:readByte(),readBoolean()、

    readShort()、readChar()、readInt() 、readLong()、readFloat()、readDouble()、

    readUTF()等。

    (3)类OutputStream是面向字节输出流的根,其主要方法有:

     void write(int b) :将参数b 的低字节写入输出流

     void write(byte b[]) :将字节数组全部写入输出流

     void write(byte b[],int offset, int len):将字节数组中从b[offset]开始

    处的len个字节写入至输出流。

    (4)类DataOutputStream实现各种类型数据的输出处理,它实现了DataOutput接

    口,主要方法有:writeByte(int)、writeBytes(String)、writeBoolean(boolean)、

    writeChars(String)、writeInt(int) 、writeLong()、writeFloat(float)、

    writeDouble(double)、writeUTF(String)等。

    2 面向字符的输入与输出流

    类Reader是面向字符的输入流的根,其提供的方法与InputStream类似,只是将基于

    Byte的参数改为基于Char。

    类Writer是面向字符的输出流类的根,其提供的方法与OutputStream类似,只是将

    基于Byte的参数改为基于Char。

    类InputStreamReader是一个特殊的流,用来将面向字节的数据流包装转换为面向字

    符的流。常用于从键盘获取输入数据。例如,从键盘输入一行字符串,可以用

    BufferedReader 的readLine()方法,但在此前必须使用InputStreamReader将字节流转化

    为字符流。

    BufferedReader in new BufferedReader(new InputStreamReader(System.in));

    String x in.readLine()

    3 文件的顺序读写

    (1)面向字节的文件访问

     以二进制文件作为数据源。FileInputStream类和FileOutputStream类分别用于

    文件的读、写访问。

     利用InputStream和OutputStream 的方法可实现文件的读写操作。

     可用DataInputStream

    展开全文
  • Java Word 文档处理API 先进功能执行邮件合并使用邮件合并生成报表插入格式户文本,段落,图像,表格以及其他内容到Word文档中使用数据库的检索数据填充到Word文档中的表格创建邮件标签关联文档,文档间移动部分内容...

    Java Word 文档处理API 先进功能

    执行邮件合并

    使用邮件合并生成报表

    插入格式户文本,段落,图像,表格以及其他内容到Word文档中

    使用数据库的检索数据填充到Word文档中的表格

    创建邮件标签

    关联文档,文档间移动部分内容,将邮件合并图像存储在数据库之外的文件中

    邮件合并数据来源于多张表,格式日期和数字字段

    文档中插入水印

    更新字段结果,公式及其他流行的字段类型

    合并和分割文档

    指定文档保护,打开已受保护和加密文档

    查找和替换文本,列举文档内容

    从文档中报存或提取OLE对象和ActiveX控件

    从文档中保存或删除VBA宏。保存VBA宏数字签名

    检测文档中的数字签名

    插入HTML文本

    高保真的在已支持文档格式之间进行转换

    使用Aspose.Words产品你可以快速可靠高保真的对已支持的文档格式(DOC, DOCX, PDF, WordProcessingML, RTF, HTML, XHTML, MHTML, OpenDocument ODT, XPS, TXT and EPUB)之间进行格式转换。

    采用文档对象模型编程

    Aspose.Words for Java API 可以帮助开发者使用由100多个类组成的文档对象模型来创建,构建,修改,解析以及检查已加载的文档。

    文档内容功能

    开发者可以通过编程来创建,修改,提取与替换文档中的部分,页眉、页脚、段落、列表、表格、文本、字段、超链接、书签、图像、智能标签、形状、自定义XML和其他元素。

    文档格式化功能

    开发者可以为任何文档元素指定细节格式。文档对象模型已支持形状、文本框、图片、OLE对象和控件,使用它可以帮助你处理许多例如页面插入水印或从文档中提取图像等任务。

    实用性功能

    Aspose.Words for Java API还提供一些实用功能,例如合并与分割文档,文档间拷贝片段,文档保护与解除,修改文档属性以及插入HTML片段到文档中。

    报表和邮件合并功能

    你可以使用Aspose.Words for Java作为一个功能齐全的报表解决方案。使用Microsoft Word设计你的报表,然后使用Aspose.Words for Java产品向文档中填充来自不同数据源的数据,保持邮件合并设置保存。Aspose.Words for Java允许开发者在报表中使用标准Microsoft Word 邮件合并字段。另外,你还可以使用Aspose.Words for Java扩展语法来执行例如插入图像或插入重复区域等复杂任务。你的报表预计邮件合并的数据可来源于ResultSet对象以及用户自定义业务对象。

    不再需要Microsoft Word办公自动化软件了

    Aspose.Words for Java APIs 是使用托管代码构建,不用再在你的机器上安装微软自动化办公软件。它已是微软自动化办公软件的替代产品,已经完全具备安全,稳定,可伸缩,快速,高性价比等优势。

    展开全文
  • 这里使用的是文件读写流的时候进行异位算法,方法也比较简单。详细见代码,可以是任何文件,图片,pdf等;package inno320;import java.io.File;import java.io.InputStream;import java.io.OutputStream;import ...

    这里使用的是文件读写流的时候进行异位算法,方法也比较简单。

    详细见代码,可以是任何文件,图片,pdf等;package inno320;

    import java.io.File;

    import java.io.InputStream;

    import java.io.OutputStream;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    public class FileEncAndDec {

    private static final int numOfEncAndDec = 0x99; // 加密解密秘钥

    private static int dataOfFile = 0; // 文件字节内容

    public static void main(String[] args) {

    File srcFile = new File("g:\\zanshan.jpg"); // 初始文件

    File encFile = new File("f:\\encFile.jpg"); // 加密文件

    File decFile = new File("f:\\decFile.jpg"); // 解密文件

    try {

    encFile(srcFile, encFile); // 加密操作

    decFile(encFile,decFile);

    } catch (Exception e) {

    e.printStackTrace();

    }

    }

    private static void encFile(File srcFile, File encFile) throws Exception {

    if (!srcFile.exists()) {

    System.out.println("source file not exixt");

    return;

    }

    if (!encFile.exists()) {

    System.out.println("encrypt file created");

    encFile.createNewFile();

    }

    InputStream fis = new FileInputStream(srcFile);

    OutputStream fos = new FileOutputStream(encFile);

    while ((dataOfFile = fis.read()) > -1) {

    fos.write(dataOfFile ^ numOfEncAndDec);

    }

    fis.close();

    fos.flush();

    fos.close();

    }

    private static void decFile(File encFile, File decFile) throws Exception {

    if (!encFile.exists()) {

    System.out.println("encrypt file not exixt");

    return;

    }

    if (!decFile.exists()) {

    System.out.println("decrypt file created");

    decFile.createNewFile();

    }

    InputStream fis = new FileInputStream(encFile);

    OutputStream fos = new FileOutputStream(decFile);

    while ((dataOfFile = fis.read()) > -1) {

    fos.write(dataOfFile ^ numOfEncAndDec);

    }

    fis.close();

    fos.flush();

    fos.close();

    }

    }

    中间为加密后的文件,无法在正常打开,右边为解密 的文件,这里的密钥可以自己定义

    f295d3a3c31e66e87dc9f206172d2e6b.png

    展开全文
  • JAVA基础资料以及基本算法(自己整理的)一:JAVA 读写文件:FileInputStream通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名name 指定。创建一个新 FileDescriptor 对象来...
  • 这里使用的是文件读写流的时候进行异位算法,方法也比较简单。详细见代码,可以是任何文件,图片,pdf等; package inno320;import java.io.File;import java.io.InputStream;import java.io.OutputStream;import ...
  • 资源名称:Java核心技术 卷II 高级特性(原书第9版) PDF第1章 文件 11.1  11.1.1 读写字节 11.1.2 完整的家族 31.1.3 组合过滤器 71.2 文本输入与输出 101.2.1 如何写出文本输出 101.2.2 如何读入...
  • Java程序设计 上机实验报告 专业班级 姓 名 学 号 实验时间 指导教师 成 绩 实验 实验五 流文件及基于文本的应用 名称 1) 理解数据的概念 实验 2) 理解Java流的层次结构 目的 3) 理解并掌握文件读写操作方法 ...
  • java范例开发大全(pdf&源码)

    热门讨论 2013-07-04 13:04:40
    实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符 209 实例140 按顺序创建文件 210 实例141 按顺序读取文件 211 实例142 追加文件内容 211 ...
  • 4.1.1 ——Java I/O的基础 72 4.1.2 Java I/O库 72 4.2 练习 74 4.2.1 数据传送的通道 74 4.2.2 管道的一端 76 4.2.3 文件处理 78 4.2.4 基于对象的读写 80 4.2.5 NIO 85 4.3 小结 89 第5章 如何走得更稳...
  • 4.1.1 ——Java I/O的基础 72 4.1.2 Java I/O库 72 4.2 练习 74 4.2.1 数据传送的通道 74 4.2.2 管道的一端 76 4.2.3 文件处理 78 4.2.4 基于对象的读写 80 4.2.5 NIO 85 4.3 小结 89 第5章 如何走得更稳...
  • 4.1.1 ——Java I/O的基础 72 4.1.2 Java I/O库 72 4.2 练习 74 4.2.1 数据传送的通道 74 4.2.2 管道的一端 76 4.2.3 文件处理 78 4.2.4 基于对象的读写 80 4.2.5 NIO 85 4.3 小结 89 第5章 如何走得更稳...
  • 4.1.1 ——Java I/O的基础 72 4.1.2 Java I/O库 72 4.2 练习 74 4.2.1 数据传送的通道 74 4.2.2 管道的一端 76 4.2.3 文件处理 78 4.2.4 基于对象的读写 80 4.2.5 NIO 85 4.3 小结 89 第5章 如何走得更稳...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术...
  • 本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • 本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • 本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • 本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术...
  • 本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...
  • effective-java-3rd-chinese:Effective Java 中文版(第 3 版),Java 四大名著之一,本书一共包含 90 个条目,每个条目讨论 Java 程序设计中的一条规则。这些规则反映了最有经验的优秀程序员在实践中常用的一些...
  • 推荐 在线阅读 (Github 访问速度比较慢可能会导致部分图片无法刷新出来) ...《Java 面试突击》: 由本文档衍生的专为面试而生的《Java 面试突击》V4.0 PDF 版本公众号后台回复 "面试突击" 即可领取!
  • 推荐 在线阅读 (Github 访问速度比较慢可能会导致部分图片无法刷新出来) ...《Java 面试突击》: 由本文档衍生的专为面试而生的《Java 面试突击》V4.0 PDF 版本公众号后台回复 "面试突击" 即可领取!
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用...
  • Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义...
  • Java资源包01

    2016-08-31 09:16:25
    fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 类库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用...

空空如也

空空如也

1 2 3 4 5
收藏数 91
精华内容 36
关键字:

java读写pdf文件流

java 订阅