`
kongshanxuelin
  • 浏览: 912193 次
  • 性别: 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();   
}  

相关推荐

    JAVA_API1.6文档(中文)

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

    JavaAPI1.6中文chm文档 part1

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

    [Java参考文档]

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

    [Java参考文档].JDK_API 1.6

    本文档是 JavaTM Platform Standard Edition 6 的 API 规范。 Java SE Platform 软件包 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制...

    JavaAPI中文chm文档 part2

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

    汇编语言(第2版)

    1.14 各类存储器芯片 1.15 内存地址空间 第2章 寄存器 2.1 通用寄存器 2.2 字在寄存器中的存储 2.3 几条汇编指令 2.4 物理地址 2.5 16位结构的CPU 2.6 8086cPu给出物理地址的方法 2.7 “段地址xl6+偏移地址=物理...

    java api最新7.0

    JAVA开发人员最新版本7.0 api文档!本文档是 Java Platform Standard Edition 7 的 API !Java 1.7 API的中文帮助文档。 深圳电信培训中心 徐海蛟博士教学用api 7.0中文文档。支持全文检索,在线即时查询。 里面列...

    电子时钟设计(1).doc

    通用机: 科学计算、数据处理、过程控制解决各类问题 (3)按照原理分类 数字机: 速度快、精度高、自动化、通用性强 模拟机: 用模拟量作运算量速度快、精度差 混合机: 集前两者优点、避免其缺点处于发展阶段 3、...

    Java 1.6 API 中文 New

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

    JDK_1_6 API

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

    PHP程序开发范例宝典III

    实例182 通用数据信息的查询 285 实例183 查询结果的分页显示 287 实例184 用户身份验证类的实现 289 实例185 图片的分栏显示 291 7.2 PHP操纵SQL Server数据库 292 实例186 通过ADO方式连接SQL Server...

    2017年统考计算机应用基础真题.doc

    数以两个八进制表示 答案:A 电大、各类远程网络教育统考大学英语B、计算机应用基础统考辅导 全套题库,精心整理并归类完毕,全中文翻译,视频教程讲解,零基础一次性通过,索 取请加QQ: 153499368 8.在对磁盘及其...

    1345个易语言模块

    各类已打开 的数据库记录打印.ec 同步目录.ec 同步缩放控件.ec 同步缩放控件1.0.ec 同步缩放窗口1.0.ec 吸 附模块.ec 周易模块,易经模块,八卦模块 V 1.22.ec 和是几与谁最大.ec 响应左键放开.ec 四则混合运算模 块....

    1350多个精品易语言模块

    各类已打开 的数据库记录打印.ec 同步目录.ec 同步缩放控件.ec 同步缩放控件1.0.ec 同步缩放窗口1.0.ec 吸 附模块.ec 周易模块,易经模块,八卦模块 V 1.22.ec 和是几与谁最大.ec 响应左键放开.ec 四则混合运算模 块....

    会计理论考试题

    19.软盘插入软盘驱动器后,驱动器的读写就通过读写窗口存取信息。( Y ) 20.计算机的常用输入设备有打印机和键盘。( N ) 第二套 选择题 1.PC机中 Intel8088、80286、80386、80486,PemiumPⅡ、PⅢ是指_D_的不同...

    全球办公自动化系统V3.0全部源代码

    SQL.exe 通用数据库查询系统 {支持各类数据库格式的查询,支持Undo 及 Redo 操作,可以保存任意中间结果 ,支持对任意结果的n次查询 支持查询结果导入excel表 支持多表查询操作} 需要 BDE skynet.exe 电子邮件系统...

    网管教程 从入门到精通软件篇.txt

    EDD:元素定义文档(FrameMaker+SGML文档) EDE:Ensoniq EPS磁盘映像 EDK:Ensoniq KT磁盘映像 EDQ:Ensoniq SQ1/SQ2/Ks32磁盘映像 EDS:Ensoniq SQ80磁盘映像 EDV:Ensoniq VFX-SD磁盘映像 EFA:Ensoniq ASR...

Global site tag (gtag.js) - Google Analytics