word二进制流编译html
Ⅰ 如何从word文件的二进制流中提取文本
用BufferedReader很容易实现的.我写了一个,仅供参考:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
public class ReaderWordFile
{
public static void main(String[] args){
//我是假设我的word文件为F:盘下的test.doc.所以先创建这个文件.
File file = new File("F://test.doc");
FileInputStream fis=null;
Reader reader=null;
BufferedReader br=null;
try {
/*创建文件输入流,这是一个字节流.然后通过Reader的封装,Reader指向的其实是InputStreamReader.InputStreamReader是字节流通向字符流的桥梁,BufferedReader再封装Reader,通过他的readLine()来读取字符*/
fis = new FileInputStream(file);
reader = new InputStreamReader(fis);
br = new BufferedReader(reader);
String strLine;
StringBuffer sb = new StringBuffer();
/*sb用于存读取的字符串,因为大量的append的,所以用StringBuffer,效率要大大的高于String的拼接*/
while((strLine = br.readLine())!=null){
sb.append(strLine+"\n");
}
/*这个while就是这段代码的意义所在了,用readLine(),一行一行的读出doc文件中的内容*/
System.out.println(sb.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
/*为了保证每个流都能关闭,最好是给每一个分别套上try catch.这个有一个关闭异常不会影响其他的关闭,我这样写显然不安全,只是为了方便*/
fis.close();
reader.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
当然这样做,这个word文件必须得是纯文本文件.所以这个方法更适合于读取txt文件.
补充:
word文件已经在数据库里了?你想从数据库中读取word文件?
如果word是以binary或image存在在数据库中的.你也可以把这些数据封装在一个输入流里面.你仅仅只是多做了ODBC-JDBC桥而已,当然不同的数据库都对Java提供了JDBC包,且都是免费下载的到的,使用起来就更方便了.
我不明白word文件的来源到底是文件,还是数据源有什么区别?
你掌握一种思想就行了.