`
kongshanxuelin
  • 浏览: 926944 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

通用各类文档读写的设计与实现

阅读更多

在我们日常的项目开发中,经常碰到需要读取word等文档的需求,如何来设计和实现呢?我的实现代码如下:

  1. 定义一个IDoc的接口

 

package com.common.doc;

public interface IDoc {
	public String read();
	public boolean write(String str);
	public boolean rename(String newName);
	public boolean exists();
}
 
  1. 定义一个AbstractDoc的抽象类,这个类实现一般的文件操作,如存在判断等

 

package com.common.doc;

import java.io.File;

public class AbstractDoc implements IDoc{

	private String filepath;
	
	public String getFilepath() {
		return filepath;
	}
	public AbstractDoc(String path){
		this.filepath = path;
	}
	public boolean exists() {
	    File f=new File(filepath);
	    return f.exists();
	}
	@Override
	public String read(){
		return "";
	}

	public boolean rename(String newName) {
	    try{
	        File f=new File(filepath);
	        String str=filepath.substring(0,filepath.lastIndexOf("\\"));
	        f.renameTo(new File(str+"\\"+newName));
	        }catch(Exception ex)
	        {
	          return false;
	        }
	        return true;
	}
	@Override
	public boolean write(String str) {
		return false;
	}

}
 
  1. 各个文档继承AbstractDoc的read,write重载函数即可

如Wod实现代码如下:

package com.common.doc;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.poi.hwpf.extractor.WordExtractor;

public class WordDoc extends AbstractDoc{
	
	public WordDoc(String path){
		super(path);
	}
	
	public String read(){
		StringBuffer sb = new StringBuffer();
		try {
			InputStream is = new FileInputStream(super.getFilepath());
			WordExtractor ex = new WordExtractor(is);// is是WORD文件的InputStream
			sb.append(ex.getText());
		} catch (Exception e) {
			e.printStackTrace();
		}
		return sb.toString();		
	}
}
 
  1. 测试代码
      IDoc doc = new WordDoc("c:\\测试文档.doc");
      if(doc.exists()){
    	  System.out.println(doc.read());
      }else{
    	  System.out.println("word不存在");
      }

  欢迎各位拍砖讨论!

分享到:
评论
1 楼 erlengleng 2009-03-11  
package com.common.doc;   
  
public interface IDoc {   
    public String read();   
    public boolean write(String str);   
    public boolean rename(String newName);   
    public boolean exists();   
}  

相关推荐

    行业文档-设计装置-便携式读写设备.zip

    《便携式读写设备——技术解析与应用探讨》 便携式读写设备,作为现代数字生活中的重要工具,广泛应用于数据交换、移动存储、信息传输等多个领域。这类设备通常小巧轻便,易于携带,且具备高速读写能力,为用户提供...

    W5182读写器

    **正文** "W5182读写器"是一款...总结来说,"W5182读写器"的CCID驱动程序是设备与计算机通信的关键,通过安装和配置这些驱动,用户可以高效、安全地利用读写器处理各种非接触式智能卡,实现各类应用场景的功能需求。

    JAVA_API1.6文档(中文)

    java.awt.event 提供处理由 AWT 组件所激发的各类事件的接口和类。 java.awt.font 提供与字体相关的类和接口。 java.awt.geom 提供用于在与二维几何形状相关的对象上定义和执行操作的 Java 2D 类。 java.awt.im ...

    单片机寄存器串行读写代码

    附带的"单片机寄存器串行读写代码.doc"文档很可能是对代码的详细解释,包括代码结构、主要函数及其实现原理,还有可能包含了如何移植到其他单片机平台的指导。 仪表通讯是指单片机与各类测量仪表之间的数据交换,如...

    精选_毕业设计_基于C++的物资管理系统的设计与实现_完整源码

    【物资管理系统设计与实现】 物资管理系统是企业或组织日常运营中的关键组成部分,它负责跟踪、管理及优化物资的采购、存储、分配等流程。在本项目中,我们使用C++编程语言来构建这样一个系统,旨在提供高效、准确...

    车辆管理系统程序的设计文档.doc

    本文档主要介绍了如何设计和实现一个车辆管理系统程序,旨在检验面向对象C++的学习成果,并提升将实际问题转化为编程问题的能力。系统的主要功能包括车辆信息的读取、调用、管理,以及一系列与之相关的操作。 1. **...

    C#图书管理系统(自带通用数据库)+设计报告+PPT

    而XML文件则可以作为简单的数据存储方式,通过读写XML文档实现数据的增删改查。这两种方案都具有便携性和独立性,能够在各种环境下运行图书管理系统的数据存储需求。 在项目的开发过程中,可能会涉及以下知识点: ...

    基于单片机IC卡设计说明.doc

    【描述】:本文档详细阐述了基于单片机的IC卡读写器设计,涵盖了系统原理、硬件组成部分、软件实现以及总结。 【标签】:互联网 【正文】: IC卡在现代社会中的应用日益广泛,尤其在互联网和计算机领域,它作为...

    JSP论文格式化系统_——后台模块的设计与实现(源代码+论文).rar

    《JSP论文格式化系统——后台模块的设计与实现》是一个基于Java Server Pages(JSP)技术的毕业设计项目,旨在创建一个系统,该系统能够帮助用户自动格式化学术论文,确保其符合特定的规范和标准。这个系统的核心是...

    详细设计说明书模板范例1

    【中国电信号码百事通业务统一座席界面详细设计说明书】主要涵盖了该业务系统的主要功能模块的设计细节,旨在为实现一个高效、用户友好的电信服务界面提供指导。以下是各个模块的详细解析: 1. **客户信息显示区...

    VxWorks环境下串口驱动程序设计.rar

    1. **串口基础**:串口(Serial Port)是计算机上的一种通用接口,用于实现串行通信。常见的串口标准有RS-232、RS-422和RS-485。串口通信基于字符流,数据以字节为单位依次发送或接收,通常包括起始位、数据位、奇偶...

    VB工程文档生成器[VBPScan.rar]-精品源代码

    总结来说,VB工程文档生成器通过解析VB工程文件,利用各类源代码模块,实现了自动化的文档生成,大大提升了软件开发的效率和质量。对于开发者而言,理解和掌握这些源代码文件的结构和功能,有助于更好地利用该工具,...

    c++课程设计宾馆客房管理系统.zip

    1. **数据结构与类的设计**:系统中需要定义各类对象,如客房、客人、订单等,这需要通过C++的类来实现。类的定义需要包含属性(如客房类型、价格、状态等)和方法(如预订、退房等操作)。同时,可以使用容器类(如...

    stm32最新中文库说明文档

    了解并熟练运用这些库和示例,开发者可以轻松实现STM32F10x的各类功能,如控制LED灯、读取传感器数据、实现无线通信等。随着经验的增长,开发者还可以进一步探索更高级的应用,如RTOS(实时操作系统)集成、浮点运算...

    考试系统数据库表设计.docx

    《考试系统数据库表设计》是2015年12月编制的一份详细文档,旨在规划和构建一个高效、完整的考试管理系统。这份文档包含了数据库设计的各个方面,包括数据分区和数据模型,以及各个关键表的设计。 1. 数据库设计: ...

    基于c51单片机的程序设计

    5. **串行通信**:8051的UART(通用异步收发传输器)允许单片机与其他设备进行串行通信,如SPI、I2C、UART等协议。理解和应用这些通信协议,可以实现单片机与传感器、显示器等外设的数据交换。 6. **存储器管理**:...

    车辆管理系统设计C++

    车辆管理系统设计C++是基于C++编程语言实现的一个软件应用,主要用于管理各类车辆的基本信息。在实际运营中,这样的系统可以极大地提升车辆管理的效率,减少人为错误,并提供方便的数据统计与查询功能。以下是该系统...

    单片机扩展及应用(与“方式”有关的文档共68张).pptx

    单片机扩展及应用主要涉及单片机与外部设备之间的通信和数据传输,这通常通过I/O接口实现。...了解这些知识点,有助于设计和实现单片机与外部设备的高效交互,进一步扩展单片机的功能,满足不同应用场景的需求。

    impinjSDK工作手册

    5. **通用输入输出(GPIO)**:手册也解释了如何使用Impinj读写器的通用输入和输出端口进行操作,如GPIO的通用目的输入和输出功能。 6. **订阅、测试功率以及线程使用**:文档还探讨了如何订阅读写器事件、功率调整...

Global site tag (gtag.js) - Google Analytics