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文件的來源到底是文件,還是數據源有什麼區別?
你掌握一種思想就行了.