通用的读取方法:
读取 doc
private static String contextOfDoc(File file){
String str = "";try {
FileInputStream fis = new FileInputStream(file);HWPFDocument doc = new HWPFDocument(fis);str = doc.getDocumentText();doc.close();fis.close();} catch (Exception e) {
e.printStackTrace();}return str;}
读取 docx
private static String contextOfDocx(File file){
String str = "";try {
FileInputStream fis = new FileInputStream(file);XWPFDocument xdoc = new XWPFDocument(fis);XWPFWordExtractor extractor = new XWPFWordExtractor(xdoc);str = extractor.getText();extractor.close();fis.close();} catch (Exception e) {
e.printStackTrace();}}
注意项
1、两种文件中对换行解释的不同:
.doc
中,换行符是 字符 13
, 即 \r
(回车)
.docx
中,换行符是 字符 10
,即 \n
(换行)
Swing 中类似于 JTextPane 的文本域组件,需要将字符 13
转换为字符 10
,否则无法被识别
2、读取到最后可能会有 「本文结束符」字符 3
或 「传输结束符」字符 4
,应该对这两种情况加以特殊判断:
if(chars[i]==3||chars[i]==4)break;