论坛首页 Java企业应用论坛

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

浏览 2199 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-21   最后修改:2008-11-21

在我们日常的项目开发中,经常碰到需要读取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不存在");
      }

  欢迎各位拍砖讨论!

   发表时间: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();   
}  
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics