javapoi3.16中的WordExtractor支持读取doc嘛?在读取时出现如下错误

javapoi3.16中的WordExtractor支持读取doc嘛?在读取时出现如下错误

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.util.IOUtils.toByteArray(Ljava/io/InputStream;I)[B
    at org.apache.poi.hwpf.HWPFDocumentCore.verifyAndBuildPOIFS(HWPFDocumentCore.java:96)
    at org.apache.poi.hwpf.extractor.WordExtractor.<init>(WordExtractor.java:51)
    at com.primeton.knowledge.word.wordEx.appWord(wordEx.java:60)
    at com.primeton.knowledge.word.wordEx.main(wordEx.java:42)


从错误信息来看,javapoi3.16的WordExtractor类在读取doc文件时调用了POI中的IOUtils.toByteArray方法,但是这个方法在你的环境中不存在,导致NoSuchMethodError错误。
有两种解决办法:

  1. 升级POI版本。IOUtils.toByteArray方法存在于POI 3.17及以上版本,升级到这些版本应该可以解决问题。
  2. 如果必须使用3.16版本,可以自己实现IOUtils.toByteArray方法。可以这样写:
    java
    public static byte[] toByteArray(InputStream in, int length) throws IOException {
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    byte[] buffer = new byte[length];
    int readCount;
    while ((readCount = in.read(buffer)) != -1) {
     out.write(buffer, 0, readCount); 
    
    }
    out.close();
    in.close();
    return out.toByteArray();
    }
    然后在WordExtractor类中,调用这个方法替换原来的POI的IOUtils.toByteArray调用。