错误显示doc文件读取从文档上的控制台中的Java

问题描述:

我试图从控制台上一个doc文件显示数据,然后我得到这个错误错误显示doc文件读取从文档上的控制台中的Java

run: 
The document is really a RTF file 
Exception in thread "main" java.lang.NullPointerException 
    at DocReader.readDocFile(DocReader.java:36) 
    at DocReader.main(DocReader.java:47) 
Java Result: 1 
BUILD SUCCESSFUL (total time: 4 seconds) 

任何一个可以解释我哪里错了

代码是 import java.io.File; import java.io.FileInputStream;

import org.apache.poi.hwpf.HWPFDocument; 
import org.apache.poi.hwpf.extractor.WordExtractor; 
public class DocReader { 
public void readDocFile() { 
File docFile = null; 
WordExtractor docExtractor = null ; 
WordExtractor exprExtractor = null ; 
try { 
docFile = new File("C:\\web.doc"); 

FileInputStream fis=new FileInputStream(docFile.getAbsolutePath()); 


HWPFDocument doc=new HWPFDocument(fis); 

docExtractor = new WordExtractor(doc); 
} 
catch(Exception exep) 
{ 
System.out.println(exep.getMessage()); 
} 


String [] docArray = docExtractor.getParagraphText(); 

for(int i=0;i<docArray.length;i++) 
{ 
if(docArray[i] != null) 
System.out.println("Line "+ i +" : " + docArray[i]); 
} 
} 

public static void main(String[] args) { 
DocReader reader = new DocReader(); 
reader.readDocFile(); 
} 
} 
+0

这将有助于查看DocReader.java第36行附近的代码,以帮助您诊断出错的地方。您正在使用尚未实例化或分配的对象。 – jmq 2011-02-14 20:43:22

该文件是一个真正的RTF文件

这是从IllegalArgumentException的典型的消息构造函数为HWPFDocument。这意味着提供的文件实际上是(写字板)RTF文件,其.rtf扩展名已被错误地重命名为.doc

供应真正的MS Word .doc文件,而不是和修复你的代码继续流时发生异常。你需要扔掉它。

这意味着,在DocReader.java文件的第36行,你正试图从调用对象的API,但该对象没有被尚未创建。因此,解决方案是在进行API调用之前首先创建类的实例。

UPDATE

我的直觉告诉我,NullPointerException发生在docExtractor.getParagraphText()因为docExtractor没有得到正确初始化。相反,吞咽异常,打印堆栈跟踪找出实际的问题,比如: -

try { 
    ... 
} 
catch(Exception exep) { 
    exep.printStackTrace(); // do this 
} 
+0

我可以发布代码我做了什么,所以你可以告诉我我错了什么地方 – satheesh 2011-02-14 20:44:17

+0

当然,在这里发布你的代码。 – limc 2011-02-14 20:45:36

只需在Microsoft Office等某些Document程序中打开该文件即可。现在使用“另存为”选项保存相同的文件并选择.doc格式。