﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-备忘录-文章分类-JAVA技术</title><link>http://www.blogjava.net/103335460/category/33634.html</link><description>记录学习过、研究过、使用过和总结过的内容，以备不时之需</description><language>zh-cn</language><lastBuildDate>Thu, 11 Mar 2010 05:52:15 GMT</lastBuildDate><pubDate>Thu, 11 Mar 2010 05:52:15 GMT</pubDate><ttl>60</ttl><item><title>JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例</title><link>http://www.blogjava.net/103335460/articles/314145.html</link><dc:creator>雪山飞狐</dc:creator><author>雪山飞狐</author><pubDate>Mon, 01 Mar 2010 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/103335460/articles/314145.html</guid><description><![CDATA[以下是Java对几种文本文件内容读取代码。其中，OFFICE文档（WORD,EXCEL）使用了POI控件，PDF使用了PDFBOX控件。
<p>&nbsp;<span style="font-size: small"> <a title="[置顶] POI,PDFBOX,JDOM的下载地址和在Eclipse中的配置方法" href="http://lycoder.javaeye.com/blog/451613" target="_blank"><span style="color: #ff0000">点击这里</span> </a>查看相关控件的下载地址和配置方法。</span> </p>
<p>&nbsp;</p>
&nbsp;
<p>&nbsp; <span style="color: #ff0000"><span style="font-size: small"><strong>WORD</strong> </span></span></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://lycoder.javaeye.com/blog/451564#"></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">package</span><span>&nbsp;textReader; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.*; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;org.apache.poi.hwpf.extractor.WordExtractor; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;WordReader&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;WordReader(){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filePath&nbsp;文件路径 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;读出的Word的内容 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getTextFromWord(String&nbsp;filePath){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;result&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;File(filePath); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;fis&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;FileInputStream(file); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WordExtractor&nbsp;wordExtractor&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;WordExtractor(fis); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;wordExtractor.getText(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">catch</span><span>(FileNotFoundException&nbsp;e){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span class="keyword">catch</span><span>(IOException&nbsp;e){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;result; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="java" style="display: none" name="code">package textReader;
import java.io.*;
import org.apache.poi.hwpf.extractor.WordExtractor;
public class WordReader {
public WordReader(){
}
/**
* @param filePath 文件路径
* @return 读出的Word的内容
*/
public String getTextFromWord(String filePath){
String result = null;
File file = new File(filePath);
try{
FileInputStream fis = new FileInputStream(file);
WordExtractor wordExtractor = new WordExtractor(fis);
result = wordExtractor.getText();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
};
return result;
}
}
</pre>
&nbsp;&nbsp;
<p>&nbsp; <span style="font-size: small; color: #ff0000"><strong>EXCEL</strong> </span></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://lycoder.javaeye.com/blog/451564#"></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">package</span><span>&nbsp;textReader; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;org.apache.poi.hssf.usermodel.HSSFWorkbook; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;org.apache.poi.hssf.usermodel.HSSFSheet; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;org.apache.poi.hssf.usermodel.HSSFRow; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;org.apache.poi.hssf.usermodel.HSSFCell; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.FileInputStream; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.FileNotFoundException; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.IOException; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;ExcelReader&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="annotation">@SuppressWarnings</span><span>(</span><span class="string">"deprecation"</span><span>) &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filePath&nbsp;文件路径 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;读出的Excel的内容 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getTextFromExcel(String&nbsp;filePath)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;buff&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StringBuffer(); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//创建对Excel工作簿文件的引用 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HSSFWorkbook&nbsp;wb&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;HSSFWorkbook(</span><span class="keyword">new</span><span>&nbsp;FileInputStream(filePath)); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//创建对工作表的引用。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">int</span><span>&nbsp;numSheets&nbsp;=&nbsp;</span><span class="number">0</span><span>;&nbsp;numSheets&nbsp;&lt;&nbsp;wb.getNumberOfSheets();&nbsp;numSheets++)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(</span><span class="keyword">null</span><span>&nbsp;!=&nbsp;wb.getSheetAt(numSheets))&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HSSFSheet&nbsp;aSheet&nbsp;=&nbsp;wb.getSheetAt(numSheets);</span><span class="comment">//获得一个sheet </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">int</span><span>&nbsp;rowNumOfSheet&nbsp;=&nbsp;</span><span class="number">0</span><span>;&nbsp;rowNumOfSheet&nbsp;&lt;=&nbsp;aSheet.getLastRowNum();&nbsp;rowNumOfSheet++)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(</span><span class="keyword">null</span><span>&nbsp;!=&nbsp;aSheet.getRow(rowNumOfSheet))&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HSSFRow&nbsp;aRow&nbsp;=&nbsp;aSheet.getRow(rowNumOfSheet);&nbsp;</span><span class="comment">//获得一个行 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">for</span><span>&nbsp;(</span><span class="keyword">int</span><span>&nbsp;cellNumOfRow&nbsp;=&nbsp;</span><span class="number">0</span><span>;&nbsp;cellNumOfRow&nbsp;&lt;=&nbsp;aRow.getLastCellNum();&nbsp;cellNumOfRow++)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(</span><span class="keyword">null</span><span>&nbsp;!=&nbsp;aRow.getCell(cellNumOfRow))&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HSSFCell&nbsp;aCell&nbsp;=&nbsp;aRow.getCell(cellNumOfRow);</span><span class="comment">//获得列值 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">switch</span><span>(aCell.getCellType()){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span>&nbsp;HSSFCell.CELL_TYPE_FORMULA: &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">break</span><span>;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span>&nbsp;HSSFCell.CELL_TYPE_NUMERIC: &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.append(aCell.getNumericCellValue()).append(</span><span class="string">'\t'</span><span>);</span><span class="keyword">break</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">case</span><span>&nbsp;HSSFCell.CELL_TYPE_STRING: &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.append(aCell.getStringCellValue()).append(</span><span class="string">'\t'</span><span>);</span><span class="keyword">break</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.append(</span><span class="string">'\n'</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(FileNotFoundException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;buff.toString(); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="java" style="display: none" name="code">package textReader;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class ExcelReader {
@SuppressWarnings("deprecation")
/**
* @param filePath 文件路径
* @return 读出的Excel的内容
*/
public String getTextFromExcel(String filePath) {
StringBuffer buff = new StringBuffer();
try {
//创建对Excel工作簿文件的引用
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(filePath));
//创建对工作表的引用。
for (int numSheets = 0; numSheets &lt; wb.getNumberOfSheets(); numSheets++) {
if (null != wb.getSheetAt(numSheets)) {
HSSFSheet aSheet = wb.getSheetAt(numSheets);//获得一个sheet
for (int rowNumOfSheet = 0; rowNumOfSheet &lt;= aSheet.getLastRowNum(); rowNumOfSheet++) {
if (null != aSheet.getRow(rowNumOfSheet)) {
HSSFRow aRow = aSheet.getRow(rowNumOfSheet); //获得一个行
for (int cellNumOfRow = 0; cellNumOfRow &lt;= aRow.getLastCellNum(); cellNumOfRow++) {
if (null != aRow.getCell(cellNumOfRow)) {
HSSFCell aCell = aRow.getCell(cellNumOfRow);//获得列值
switch(aCell.getCellType()){
case HSSFCell.CELL_TYPE_FORMULA:
break;
case HSSFCell.CELL_TYPE_NUMERIC:
buff.append(aCell.getNumericCellValue()).append('\t');break;
case HSSFCell.CELL_TYPE_STRING:
buff.append(aCell.getStringCellValue()).append('\t');break;
}
}
}
buff.append('\n');
}
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return buff.toString();
}
}
</pre>
&nbsp;
<div class="quote_title"></div>
<p>&nbsp; <span style="color: #ff0000"><span style="font-size: small"><strong>PDF</strong> </span>&nbsp;</span> </p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://lycoder.javaeye.com/blog/451564#"></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">package</span><span>&nbsp;textReader; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.FileInputStream; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.FileNotFoundException; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.IOException; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">import</span><span>&nbsp;org.pdfbox.pdfparser.PDFParser; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;org.pdfbox.pdmodel.PDDocument; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;org.pdfbox.util.PDFTextStripper; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;PdfReader&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;PdfReader(){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filePath&nbsp;文件路径 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;读出的pdf的内容 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getTextFromPdf(String&nbsp;filePath)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;result&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileInputStream&nbsp;is&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDDocument&nbsp;document&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;FileInputStream(filePath); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDFParser&nbsp;parser&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;PDFParser(is); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parser.parse(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document&nbsp;=&nbsp;parser.getPDDocument(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDFTextStripper&nbsp;stripper&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;PDFTextStripper(); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;stripper.getText(document); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(FileNotFoundException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">finally</span><span>&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(is&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{is.close();}</span><span class="keyword">catch</span><span>(IOException&nbsp;e){e.printStackTrace();} &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(document&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>{document.close();}</span><span class="keyword">catch</span><span>&nbsp;(IOException&nbsp;e){e.printStackTrace();} &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;result; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="java" style="display: none" name="code">package textReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;
public class PdfReader {
public PdfReader(){
}
/**
* @param filePath 文件路径
* @return 读出的pdf的内容
*/
public String getTextFromPdf(String filePath) {
String result = null;
FileInputStream is = null;
PDDocument document = null;
try {
is = new FileInputStream(filePath);
PDFParser parser = new PDFParser(is);
parser.parse();
document = parser.getPDDocument();
PDFTextStripper stripper = new PDFTextStripper();
result = stripper.getText(document);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {is.close();}catch(IOException e){e.printStackTrace();}
}
if (document != null) {
try{document.close();}catch (IOException e){e.printStackTrace();}
}
}
return result;
}
}
</pre>
<p>&nbsp; <span style="font-size: small; color: #ff0000"><strong>TXT</strong> </span></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://lycoder.javaeye.com/blog/451564#"></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">package</span><span>&nbsp;textReader; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.*; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;TxtReader&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;TxtReader()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filePath&nbsp;文件路径 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;读出的txt的内容 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getTextFromTxt(String&nbsp;filePath)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileReader&nbsp;fr&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;FileReader(filePath); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;br&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;BufferedReader(fr); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;buff&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StringBuffer(); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;temp&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>((temp&nbsp;=&nbsp;br.readLine())&nbsp;!=&nbsp;</span><span class="keyword">null</span><span>){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.append(temp&nbsp;+&nbsp;</span><span class="string">"\r\n"</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;br.close();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;buff.toString();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="java" style="display: none" name="code">package textReader;
import java.io.*;
public class TxtReader {
public TxtReader() {
}
/**
* @param filePath 文件路径
* @return 读出的txt的内容
*/
public String getTextFromTxt(String filePath) throws Exception {
FileReader fr = new FileReader(filePath);
BufferedReader br = new BufferedReader(fr);
StringBuffer buff = new StringBuffer();
String temp = null;
while((temp = br.readLine()) != null){
buff.append(temp + "\r\n");
}
br.close();
return buff.toString();
}
}</pre>
<p><span style="font-size: small; color: #ff0000"><strong>RTF</strong> </span></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://lycoder.javaeye.com/blog/451564#"></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">package</span><span>&nbsp;textReader; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.File; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.FileInputStream; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.IOException; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.InputStream; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">import</span><span>&nbsp;javax.swing.text.BadLocationException; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;javax.swing.text.DefaultStyledDocument; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;javax.swing.text.rtf.RTFEditorKit; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;RtfReader&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;RtfReader(){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filePath&nbsp;文件路径 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;读出的rtf的内容 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getTextFromRtf(String&nbsp;filePath)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;result&nbsp;=&nbsp;</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;File(filePath); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DefaultStyledDocument&nbsp;styledDoc&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;DefaultStyledDocument(); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InputStream&nbsp;is&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;FileInputStream(file); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">new</span><span>&nbsp;RTFEditorKit().read(is,&nbsp;styledDoc,&nbsp;</span><span class="number">0</span><span>); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;String(styledDoc.getText(</span><span class="number">0</span><span>,styledDoc.getLength()).getBytes(</span><span class="string">"ISO8859_1"</span><span>)); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//提取文本，读取中文需要使用ISO8859_1编码，否则会出现乱码 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(BadLocationException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;result; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="java" style="display: none" name="code">package textReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.rtf.RTFEditorKit;
public class RtfReader {
public RtfReader(){
}
/**
* @param filePath 文件路径
* @return 读出的rtf的内容
*/
public String getTextFromRtf(String filePath) {
String result = null;
File file = new File(filePath);
try {
DefaultStyledDocument styledDoc = new DefaultStyledDocument();
InputStream is = new FileInputStream(file);
new RTFEditorKit().read(is, styledDoc, 0);
result = new String(styledDoc.getText(0,styledDoc.getLength()).getBytes("ISO8859_1"));
//提取文本，读取中文需要使用ISO8859_1编码，否则会出现乱码
} catch (IOException e) {
e.printStackTrace();
} catch (BadLocationException e) {
e.printStackTrace();
}
return result;
}
}</pre>
<p>&nbsp;&nbsp; <span style="color: #ff0000"><span style="font-size: small"><strong>HTML</strong> </span></span></p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://lycoder.javaeye.com/blog/451564#"></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">package</span><span>&nbsp;textReader; &nbsp;&nbsp;</span></span>
    <li><span class="keyword">import</span><span>&nbsp;java.io.*; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;HtmlReader&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;HtmlReader()&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filePath&nbsp;文件路径 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;获得html的全部内容 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;readHtml(String&nbsp;filePath)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;br=</span><span class="keyword">null</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;sb&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;&nbsp;StringBuffer(); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">try</span><span>&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;br=</span><span class="keyword">new</span><span>&nbsp;BufferedReader(</span><span class="keyword">new</span><span>&nbsp;InputStreamReader(</span><span class="keyword">new</span><span>&nbsp;FileInputStream(filePath),&nbsp;&nbsp;</span><span class="string">"GB2312"</span><span>));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;temp=</span><span class="keyword">null</span><span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>((temp=br.readLine())!=</span><span class="keyword">null</span><span>){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb.append(temp); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(FileNotFoundException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span class="keyword">catch</span><span>&nbsp;(IOException&nbsp;e)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace(); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;sb.toString(); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">/** </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@param&nbsp;filePath&nbsp;文件路径 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@return&nbsp;获得的html文本内容 </span>&nbsp;</span>
    <li><span><span class="comment">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/</span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;String&nbsp;getTextFromHtml(String&nbsp;filePath)&nbsp;{ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//得到body标签中的内容 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str=&nbsp;readHtml(filePath); &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringBuffer&nbsp;buff&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;StringBuffer(); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;maxindex&nbsp;=&nbsp;str.length()&nbsp;-&nbsp;</span><span class="number">1</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;begin&nbsp;=&nbsp;</span><span class="number">0</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">int</span><span>&nbsp;end;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//截取&gt;和&lt;之间的内容 </span><span>&nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">while</span><span>((begin&nbsp;=&nbsp;str.indexOf(</span><span class="string">'&gt;'</span><span>,begin))&nbsp;&lt;&nbsp;maxindex){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end&nbsp;=&nbsp;str.indexOf(</span><span class="string">'&lt;'</span><span>,begin); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>(end&nbsp;-&nbsp;begin&nbsp;&gt;&nbsp;</span><span class="number">1</span><span>){ &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buff.append(str.substring(++begin,&nbsp;end));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;=&nbsp;end+</span><span class="number">1</span><span>; &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">return</span><span>&nbsp;buff.toString(); &nbsp;&nbsp;</span></span>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span>
    <li><span>&nbsp;&nbsp;</span>
    <li><span>}&nbsp;&nbsp;</span> </li>
</ol>
</div>
<pre class="java" style="display: none" name="code">package textReader;
import java.io.*;
public class HtmlReader {
public HtmlReader() {
}
/**
* @param filePath 文件路径
* @return 获得html的全部内容
*/
public String readHtml(String filePath) {
BufferedReader br=null;
StringBuffer sb = new  StringBuffer();
try {
br=new BufferedReader(new InputStreamReader(new FileInputStream(filePath),  "GB2312"));
String temp=null;
while((temp=br.readLine())!=null){
sb.append(temp);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
/**
* @param filePath 文件路径
* @return 获得的html文本内容
*/
public String getTextFromHtml(String filePath) {
//得到body标签中的内容
String str= readHtml(filePath);
StringBuffer buff = new StringBuffer();
int maxindex = str.length() - 1;
int begin = 0;
int end;
//截取&gt;和&lt;之间的内容
while((begin = str.indexOf('&gt;',begin)) &lt; maxindex){
end = str.indexOf('&lt;',begin);
if(end - begin &gt; 1){
buff.append(str.substring(++begin, end));
}
begin = end+1;
};
return buff.toString();
}
}</pre>
&nbsp;
<p>&nbsp; <span style="font-size: small"><span style="color: #ff0000"><strong>注意</strong> </span>：若使用WPS编辑相关文档，会有错误提示，应避免。</span> </p>
<p><span style="font-size: small">&nbsp; 错误文本提示如下：</span> </p>
<p><span style="font-size: small"><strong>WORD</strong> </span></p>
<p>Your document seemed to be mostly unicode, but the section definition was in bytes! Trying anyway, but things may well go wrong!</p>
<p><strong><span style="font-size: small">EXCEL</span> </strong></p>
<p>java.lang.RuntimeException: Expected an EXTERNSHEET record but got (org.apache.poi.hssf.record.SSTRecord)<br />
&nbsp;&nbsp;&nbsp; at org.apache.poi.hssf.model.LinkTable.readExtSheetRecord(LinkTable.java:187)<br />
&nbsp;&nbsp;&nbsp; at org.apache.poi.hssf.model.LinkTable.&lt;init&gt;(LinkTable.java:163)<br />
&nbsp;&nbsp;&nbsp; at org.apache.poi.hssf.model.Workbook.createWorkbook(Workbook.java:199)<br />
&nbsp;&nbsp;&nbsp; at org.apache.poi.hssf.usermodel.HSSFWorkbook.&lt;init&gt;(HSSFWorkbook.java:273)<br />
&nbsp;&nbsp;&nbsp; at org.apache.poi.hssf.usermodel.HSSFWorkbook.&lt;init&gt;(HSSFWorkbook.java:196)<br />
&nbsp;&nbsp;&nbsp; at org.apache.poi.hssf.usermodel.HSSFWorkbook.&lt;init&gt;(HSSFWorkbook.java:312)<br />
&nbsp;&nbsp;&nbsp; at org.apache.poi.hssf.usermodel.HSSFWorkbook.&lt;init&gt;(HSSFWorkbook.java:293)<br />
&nbsp;&nbsp;&nbsp; at textReader.ExcelReader.getTextFromExcel(ExcelReader.java:23)<br />
&nbsp;&nbsp;&nbsp; at DocumentInfo.getContent(DocumentInfo.java:86)<br />
&nbsp;&nbsp;&nbsp; at MainFunction.main(MainFunction.java:19)</p>
<p><strong><span style="font-size: small">RTF</span> </strong></p>
<p>java.io.IOException: Too many close-groups in RTF text<br />
&nbsp;&nbsp;&nbsp; at javax.swing.text.rtf.RTFParser.write(Unknown Source)<br />
&nbsp;&nbsp;&nbsp; at javax.swing.text.rtf.RTFParser.writeSpecial(Unknown Source)<br />
&nbsp;&nbsp;&nbsp; at javax.swing.text.rtf.AbstractFilter.write(Unknown Source)<br />
&nbsp;&nbsp;&nbsp; at javax.swing.text.rtf.AbstractFilter.readFromStream(Unknown Source)<br />
&nbsp;&nbsp;&nbsp; at javax.swing.text.rtf.RTFEditorKit.read(Unknown Source)<br />
&nbsp;&nbsp;&nbsp; at textReader.RtfReader.getTextFromRtf(RtfReader.java:25)<br />
&nbsp;&nbsp;&nbsp; at DocumentInfo.getContent(DocumentInfo.java:74)<br />
&nbsp;&nbsp;&nbsp; at MainFunction.main(MainFunction.java:19)</p>
<p>BODY { FONT-FAMILY:Tahoma; FONT-SIZE:10pt } P { FONT-FAMILY:Tahoma; FONT-SIZE:10pt } DIV { FONT-FAMILY:Tahoma; FONT-SIZE:10pt } TD { FONT-FAMILY:Tahoma; FONT-SIZE:10pt } <span style="font-size: small; font-family: monospace">&nbsp; 顺便说一下，这里为什么会在write出错呢？因为</span> <span style="font-size: small">level是根据{和}来进行自增和自减的，当括号不匹配的时候就会提示该错误。</span> <span style="font-size: small; font-family: monospace">wps编辑rtf文件在格式上出了问题，{和}不匹配。</span> <span style="font-size: small; font-family: monospace">但用word或写字板下新建文件，编辑后另存为rtf文件（wps下不支持），用记事本打开可以发现添加了很多格式说明，但是{和}是匹配的，这样才不会报错。下面是具体说明：</span> </p>
<p><span><a href="http://www.chinaitpower.com/source/jdk122/javax/swing/text/rtf/RTFParser.java.html"><span style="font-family: monospace">http://www.chinaitpower.com/source/jdk122/javax/swing/text/rtf/RTFParser.java.html</span> </a></span></p>
<img src ="http://www.blogjava.net/103335460/aggbug/314145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/103335460/" target="_blank">雪山飞狐</a> 2010-03-01 11:01 <a href="http://www.blogjava.net/103335460/articles/314145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IoVC(转)</title><link>http://www.blogjava.net/103335460/articles/227863.html</link><dc:creator>雪山飞狐</dc:creator><author>雪山飞狐</author><pubDate>Tue, 09 Sep 2008 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/103335460/articles/227863.html</guid><wfw:comment>http://www.blogjava.net/103335460/comments/227863.html</wfw:comment><comments>http://www.blogjava.net/103335460/articles/227863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/103335460/comments/commentRss/227863.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/103335460/services/trackbacks/227863.html</trackback:ping><description><![CDATA[<div class="titlepage">
<div>
<div>
<h2 class="title"><a name="d0e1"></a>IoVC，一种新的编程思想</h2>
</div>
</div>
<hr />
</div>
<div class="toc">
<dl>
<dt><span class="section"><a href="http://blog.csdn.net/Apusiczhang/archive/2008/02/23/2114786.aspx#overview">1. 概述</a></span>
<dt><span class="section"><a href="http://blog.csdn.net/Apusiczhang/archive/2008/02/23/2114786.aspx#what_is_iovc">2. 什么是IoVC</a></span></dt></dl></div>
<div class="section" lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="overview"></a>1.&nbsp;概述</h2>
</div>
</div>
</div>
<p>长久以来，在Web编程中，一直很难克服的一个问题就是：展现层与业务数据纠缠在一起，无法进行良好的解耦， 从而造成应用系统的扩展性差，维护成本高。于是，出现了所谓的MVC框架，试图以 Model-View-Control 这种非常流行的设计模式，将两者有效的隔离开来。但回顾目前主流的 Web MVC 架构，它们所做的绝大部分工作无非是：将页面中控件的值取出打包成 Java Bean；再无非就是在帮助你完成页面导航的过程中，辅助你进行页面参数的传递与分析。这样一种&#8220;简单 MVC&#8221;架构，是无法完全解决&#8220;展现层与业务数据完全解耦&#8221;这个问题的。 一旦你的需求超越了框架的能力，那么，你将面对的依然是：不得不在展现层中嵌入大量的 Script 代码，可能是Java代码片断，也可能是大量tag-lib及EL表达式的引入。</p>
<p>在Apusic OperaMasks 2.0中，提出了一种新的编程思想：IoVC，它能够有效解决上面提及的问题。<br />
</p>
</div>
<div class="section" lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="what_is_iovc"></a>2.&nbsp;什么是IoVC</h2>
</div>
</div>
</div>
<p>IoVC——&#8220;Inversion of View-Control&#8221;，即&#8220;视图控制反转&#8221;，换言之：它能够把对&#8220;View（即 UI 视图）的控制力&#8221;注入到你的后台业务逻辑中。这样一来，你在编写业务逻辑的过程中，对 View 拥有足够的控制力，从而能够将展现层与业务逻辑完全的解耦。</p>
<p>举一个场景：页面中有一个文本输入框，它的值对应后台的一个JavaBean的属性。我们首先来看一下传统的编程模型：</p>
<pre class="programlisting">页面：<br />
&lt;w:textField value="#{myBean.value}"/&gt;<br />
<br />
后台：<br />
public class MyBean {<br />
private String value;<br />
public String getValue() {<br />
return value;<br />
}<br />
public void setValue(String value) {<br />
this.value = value;<br />
}<br />
}</pre>
<p>此时，假设用户需要发生变化，我们需要设置文本输入框的tooltip，并且，它的值来自于后台 JavaBean 的另一个属性，那么，程序需要做如下调整：</p>
<pre class="programlisting">页面：<br />
&lt;w:textField  value="#{myBean.value}" <a name="normal"></a><img alt="1" src="http://www.operamasks.org/articles/iovc/html_single/images/callouts/1.png" border="0" />tooltip="#{myBean.tooltip}"/&gt;<br />
<br />
后台：<br />
public class MyBean {<br />
private String value;<br />
<br />
<a name="normal"></a><img alt="2" src="http://www.operamasks.org//articles/iovc/html_single/images/callouts/2.png" border="0" />private String tooltip;<br />
<br />
public String getValue() {<br />
return value;<br />
}<br />
public void setValue(String value) {<br />
this.value = value;<br />
}<br />
<a name="normal"></a><img alt="3" src="http://www.operamasks.org//articles/iovc/html_single/images/callouts/3.png" border="0" />public String getTooltip() {<br />
return tooltip;<br />
}<br />
<a name="normal"></a><img alt="4" src="http://www.operamasks.org//articles/iovc/html_single/images/callouts/4.png" border="0" />public void setTooltip(String tooltip) {<br />
this.tooltip = tooltip;<br />
}<br />
}</pre>
<p>我们可以观察：在传统的编程模型下，如果页面逻辑发生变化，我们首先需要修改UI展现层，加上 tooltip="#{myBean.tooltip}"　的语句，然后，再在后台Bean中设置此属性值。</p>
<p>那么，在IoVC编程模型下，情况又是怎样的呢？</p>
<pre class="programlisting">页面：<br />
&lt;w:textField <a name="IoVC"></a><img alt="1" src="http://www.operamasks.org//articles/iovc/html_single/images/callouts/1.png" border="0" />id="txt"/&gt;<br />
后台：<br />
public class MyBean {<br />
@Bind(id="txt")<br />
private String value;<br />
}</pre>
<p>如果需要扩展文本编辑框的tooltip属性，只需要：</p>
<pre class="programlisting">页面：<br />
&lt;w:textField id="txt"/&gt;<br />
后台：<br />
public class MyBean {<br />
@Bind(id="txt")<br />
private String value;<br />
<br />
<a name="IoVC"></a><img alt="1" src="http://www.operamasks.org//articles/iovc/html_single/images/callouts/1.png" border="0" />@Bind(id="txt" att="tooltip")<br />
private String tooltip;<br />
}</pre>
<p>在IoVC编程模型下，Web页面不需要发生任何变化，你只需要在后台 Java Bean 中写上这样一行属性声明即可@Bind(id="txt" att="tooltip") private String tooltip，甚至于你连传统的getter/setter都不需要。</p>
<p>换言之，在传统的编程模型下，页面美工通过网页设计工具&#8220;画&#8221;出来的页面，程序员看不懂； 而如果程序员对页面进行修改，则页面美工又无法理解； 并且，如果要更改业务逻辑，程序员需要不断的维护页面内容，最终造成页面美工与程序员无法协同工作。而在 IoVC 的编程思想下，页面美工只需要给每个组件设置一个ID，程序员在后台的业务逻辑中，便拥有对页面 UI 元素的完全控制力。Web页面在美工完成之后，程序员再也无需因为需求的变更或者逻辑的变化，而再重新维护 Web页面内容。</p>
<p>简而言之，IoVC是一种更好的MVC，是对MVC的一种高层次抽象。</p>
<p>设想一下：日后美工人员画出来的页面（只要设置了正确的ID），程序员可以拿过来直接用，并且， 如果要对页面做调整（只要不是页面元素的增加或删除），程序员可以在自己熟悉的代码中直接设置，这岂非是一种很享受的境界？</p>
<p>注：IoVC，<a href="http://www.operamasks.org/">Apusic OperaMasks</a> 2.0新特性。<br />
<br />
<br />
<br />
</p>
<div class="titlepage">
<div>
<div>
<h2 class="title"><a name="d0e1"></a>IoVC实例分析：Hello Duke！</h2>
</div>
</div>
<hr />
</div>
<div class="toc">
<dl>
<dt><span class="section"><a href="http://blog.csdn.net/Apusiczhang/archive/2008/03/03/2142271.aspx#d0e13">1. 概述</a></span>
<dt><span class="section"><a href="http://blog.csdn.net/Apusiczhang/archive/2008/03/03/2142271.aspx#d0e33">2. 应用的开发</a></span>
<dd>
<dl>
<dt><span class="section"><a href="http://blog.csdn.net/Apusiczhang/archive/2008/03/03/2142271.aspx#d0e36">2.1. greeting.xhtml</a></span></dt></dl>
<dt><span class="section"><a href="http://blog.csdn.net/Apusiczhang/archive/2008/03/03/2142271.aspx#d0e51">3. 后台 JavaBean 的变化</a></span>
<dt><span class="section"><a href="http://blog.csdn.net/Apusiczhang/archive/2008/03/03/2142271.aspx#d0e70">4. Apusic Studio的支持</a></span>
<dt><span class="section"><a href="http://blog.csdn.net/Apusiczhang/archive/2008/03/03/2142271.aspx#d0e81">5. 注意</a></span></dt></dl></div>
<div class="section" lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="d0e13"></a>1.&nbsp;概述</h2>
</div>
</div>
</div>
<p>本文用一个非常简单的例子&#8220;helloDuke"，介绍 IoVC 编程模型的一种实际场景。在阅读本文前，建议您首先阅读这两篇文章：</p>
<p><a href="http://blog.csdn.net/articles/helloDuke/html_single" target="_top">Hello Duke！</a></p>
<p><a href="http://blog.csdn.net/articles/iovc/html_single" target="_top">IoVC，一种新的编程思想</a></p>
<p>在IoVC编程模型下的 HelloDuke 版本，功能没做任何增减，依然如下图所示：</p>
<div>
<table cellspacing="0" cellpadding="0" width="640" summary="manufactured viewport for HTML img" border="0">
    <tbody>
        <tr>
            <td><img alt="" src="http://www.operamasks.org/articles/helloduck-iovc/html_single/images/overview.jpg" width="640" /></td>
        </tr>
    </tbody>
</table>
</div>
<p>但由于在程序中用到了 IoVC 思想，及 facelets 技术，因此，整个程序的目录结构更改如下：</p>
<pre class="programlisting">helloDuke<br />
--duke.gif<br />
--greeting.xhtml<br />
--sameName.xhtml<br />
--WEB-INF<br />
--web.xml<br />
--faces-config.xml<br />
--operamasks.xml<br />
--classes<br />
--helloduke<br />
--GreetingBean.class</pre>
<p>下面就让我们来完成此应用。</p>
</div>
<div class="section" lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="d0e33"></a>2.&nbsp;应用的开发</h2>
</div>
</div>
</div>
<div class="section" lang="en">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a name="d0e36"></a>2.1.&nbsp;greeting.xhtml</h3>
</div>
</div>
</div>
<p>首先，我们来看一下老版本的 greeting.jsp是怎样的：</p>
<pre class="programlisting">&lt;%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %&gt;<br />
&lt;%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%&gt;<br />
&lt;f:view&gt;<br />
&lt;h:form&gt;<br />
&lt;h2&gt;Hello, my name is Duke. What is yours?&lt;/h2&gt;<br />
&lt;h:graphicImage url="duke.gif"&gt;&lt;/h:graphicImage&gt;<br />
&lt;h:outputText value="#{userBean.result}"/&gt;&lt;br&gt;<br />
&lt;h:inputText value="#{userBean.name}"&gt;&lt;/h:inputText&gt;<br />
&lt;h:commandButton value="sayHello" action="#{userBean.sayHello}"/&gt;<br />
&lt;/h:form&gt;<br />
&lt;/f:view&gt;</pre>
<p>那么，在AOM 2.0版本下，并且在 IoVC 编程思想下，greeting.xhtml又是怎样的呢？</p>
<pre class="programlisting">&lt;f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core"<br />
xmlns:w="http://www.apusic.com/jsf/widget" xmlns:layout="http://www.apusic.com/jsf/layout"<br />
renderKitId="AJAX" xmlns:h="http://java.sun.com/jsf/html"&gt;<br />
&lt;w:page title="helloDuke"&gt;<br />
&lt;w:form&gt;<br />
&lt;h2&gt;Hello, my name is Duke. What is yours?&lt;/h2&gt;<br />
&lt;img src="/articles/helloduck-iovc/html_single/duke.gif" /&gt;<br />
&lt;h:outputText id="result"&gt;&lt;/h:outputText&gt;&lt;br /&gt;<br />
&lt;w:textField id="name"&gt;&lt;/w:textField&gt;<br />
&lt;w:button id="sayHello" value="sayHello" /&gt;<br />
&lt;/w:form&gt;<br />
&lt;/w:page&gt;<br />
&lt;/f:view&gt;</pre>
<p>我们的注意力不要被&lt;w:&gt;还是&lt;h:&gt;所影响，我们先假设这两者都是等价的。我们主要观察&lt;h:outputText&gt;、&lt;w:textField&gt; 以及&lt;w:button&gt; 这三个主要UI控件的写法。我们可以看到，在新版本中，&lt;h:outputText&gt; 和&lt;w:textField&gt;并没有指定value，而&lt;w:button&gt;也没有指定action，但这三者都有不同的id，并且，整个页面全部都是展现层相关信息，没有任何代码片断或 EL 表达式的引入。</p>
<p>那么，这三者的值以及动作事件，又是怎样和后台的JavaBean关联起来的呢？</p>
</div>
</div>
<div class="section" lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="d0e51"></a>3.&nbsp;后台 JavaBean 的变化</h2>
</div>
</div>
</div>
<p>首先，我们也是先熟悉一下老版本中的 UserBean（在新版本中，它的名称改为 GreetingBean）。</p>
<pre class="programlisting">package helloduke;<br />
<br />
public class UserBean {<br />
<br />
private String name;<br />
<br />
public String getName() {<br />
return name;<br />
}<br />
<br />
public void setName(String name) {<br />
this.name = name;<br />
}<br />
<br />
public String getResult() {<br />
if(this.name == null || "".equals(name.trim())) return "Please input your name."; <br />
else return "Hello " + name;<br />
}<br />
<br />
public Object sayHello() {<br />
if("duke".equalsIgnoreCase(name)) return "duke";<br />
return null;<br />
}<br />
}</pre>
<p>那么，在新版本中，上述逻辑变成怎样的呢？如下所示：</p>
<pre class="programlisting">package helloduke;<br />
<br />
@ManagedBean(name="GreetingBean", scope=ManagedBeanScope.SESSION)<br />
public class GreetingBean {<br />
<br />
@Bind(id="result")<br />
private String result;<br />
<br />
@Bind(id="name")<br />
private String name;<br />
<br />
@Action(id="sayHello")<br />
public Object sayHello(){<br />
if("duke".equalsIgnoreCase(name)) return "/sameName.xhtml";<br />
return null;<br />
}<br />
<br />
@BeforeRender<br />
private void settingValues(boolean isPostBack){<br />
if(this.name == null || "".equals(name.trim())) { <br />
result = "Please input your name."; <br />
}<br />
else {<br />
result = "Hello " + name; <br />
}<br />
}<br />
}</pre>
<p>我们可以观察到，在 result 属性上，有一个 @Bind(id="result")的 annotation 声明；同样，在name上，也有 @Bind(id="name") 的声明，而在 sayHello 方法上，则有@Action(id="sayHello") 的声明。至此，我们恍然大悟：通过这样一些声明，&lt;h:outputText&gt;的值自动和 result 属性关联，&lt;w:textField&gt;的值自动和 name 属性关联，而&lt;w:button&gt; 的Action事件，则和 sayHello 方法关联。</p>
<p>等一下，这里有个问题：针对 result 属性和 name 属性，在AOM 2.0下，连 setter/getter 方法都没有？是的，完全可以忽略。</p>
<p>那么，result 的值是在哪里设置的？请注意 settingValues 方法，它有一个 @BeforeRender 的声明，意思就是说：当页面在渲染前，请调用此方法。这就相当于一个回调函数，因此，对 result 属性的设置，我们就可以在此处进行处理。</p>
<p>好像一切都很完美，但是，还有一个问题，greeting.xhtml页面，是怎样和 GreetingBean 对应起来的？目前，你可以假设认为：这是通过命名规则获得的，但这部分内容已经超过本文所要介绍的范围， 请允许我在下一篇文章中介绍。</p>
</div>
<div class="section" lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="d0e70"></a>4.&nbsp;Apusic Studio的支持</h2>
</div>
</div>
</div>
<p>我们还可以做得更好，那就是 Apusic Studio 给予的全生命周期的开发支持。</p>
<div><img alt="" src="http://www.operamasks.org/articles/helloduck-iovc/html_single/images/studio.jpg" /></div>
<p>那么，Apusic Studio 对 IoVC 又提供了怎样的支持？在这里，我们提出了称为"Smart DblClick"的技术，针对任何控件对其双击，将自动弹出该控件 IoVC 支持的向导，以&lt;w:button&gt;为例，双击的效果如下：</p>
<div><img alt="" src="http://www.operamasks.org/articles/helloduck-iovc/html_single/images/btn_smart_dblclick.jpg" /></div>
<p>看上去还不错，那么，为何不立即体验一下呢？</p>
</div>
<div class="section" lang="en">
<div class="titlepage">
<div>
<div>
<h2 class="title" style="clear: both"><a name="d0e81"></a>5.&nbsp;注意</h2>
</div>
</div>
</div>
<p>IoVC的支持仅限于 AOM 2.0 版本，并请注意 Apusic 应用服务器及 Apusic Studio的版本支持。在完成本文结束时，请使用 AOM 2.0 M1，Apusic 应用服务器 5.1 TP5，Apusic Studio 5.1 M5 版本。</p>
</div>
<p><br />
</p>
</div>
<img src ="http://www.blogjava.net/103335460/aggbug/227863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/103335460/" target="_blank">雪山飞狐</a> 2008-09-09 09:55 <a href="http://www.blogjava.net/103335460/articles/227863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>