在我们日常的项目开发中,经常碰到需要读取word等文档的需求,如何来设计和实现呢?我的实现代码如下:
package com.common.doc; public interface IDoc { public String read(); public boolean write(String str); public boolean rename(String newName); public boolean exists(); }
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; } }
如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(); } }
IDoc doc = new WordDoc("c:\\测试文档.doc"); if(doc.exists()){ System.out.println(doc.read()); }else{ System.out.println("word不存在"); } 欢迎各位拍砖讨论! |
|