2013-10-26 77 views
-1

我想讀取.txt,.doc和.docx文件並打印這些文件的內容。當我運行下面的代碼時,會讀取一些.doc和.txt文件但許多文件無法讀取。讀取.doc和.docx文件內容時出錯

import java.io.File; 
import javax.swing.*; 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileReader; 

public class FindYourDocx 
{ 

    public static void main(String[] args) 
    { 
String text = ""; 
    int read, N = 1024 * 1024; 
    char[] buffer = new char[N]; 

    try { 
     JFileChooser openFile=new JFileChooser(); 
      openFile.setCurrentDirectory(new File(".")); 
      openFile.showOpenDialog(null); 
      File f1=openFile.getSelectedFile(); 
      String file1=f1.toString(); 
      File f =new File(file1); 
      JOptionPane.showMessageDialog(null,f); 
     FileReader fr = new FileReader(f); 
     BufferedReader br = new BufferedReader(fr); 

     while(true) { 
      read = br.read(buffer, 0, N); 
      text += new String(buffer, 0, read); 
     System.out.println("Follows"+text+" "); 
        if(read < N) { 
       break; 
      } 
     System.out.println("Follows"+text+" "); } 
    } catch(Exception ex) { 
     ex.printStackTrace(); 
    } 

    }} 

通過執行上面的代碼(對於某些文件),我得到了一些有線信息如下
http://i.stack.imgur.com/RwNWM.jpg

有人請幫助我解決這個問題....

閱讀。 docx我遇到過類似XWPFDocument使用apacheio ....這是什麼?

回答

0

首先你應該考慮一下你的問題:不同的文件類型是什麼樣的文件,它們的結構是什麼,你想要打印什麼內容以及「打印」意味着什麼?你在做什麼是閱讀文件,將它們當作文本處理並將它們打印到STDOUT。在你的情況下,「打印」是什麼意思?我將「打印」解釋爲能夠將內容發送到打印機並獲得一些紙張。

另一個提示:Doc和Docx是二進制文件,其中包含「可打印」文本「某處」。你不能只讀取這些文件並對數據做些什麼。你需要知道這些文件格式是怎麼樣的,內容是什麼等等.Java無法實現這些功能,你需要額外的庫來解析這些文件格式並對它們做些什麼。

有很多教程和問題繞格式,如DOCX:

How to read docx file content in java api using poi jar

+0

對不起朋友,我不能得到什麼ü說.... u能請上傳代碼閱讀doc和docx文件???並且是java中的初學者,所以請幫我解決這個問題;( – user2576388

+0

我沒有源代碼,我只想讓你考慮一下你的問題:僅僅從任何文件中讀取一些字節來打印內容就足夠了以人性化的方式?不,不需要考慮不同的文件格式並找到一些能夠解析它們的庫。 –

0

讀取.DOCX我使用apacheio ....這是什麼東西兩端像來到XWPFDocument?

您的意思是Apache POI。要了解更多信息,請查看網站。簡而言之,Apache POI和docx4j(我注意到您已標記)都是旨在讀取,操作和編寫Microsoft Office文件的Java庫。

'doc'文件是Microsoft專有的二進制文件。如果您嘗試讀取它們並單獨使用Java IO API顯示它們,您將看到的只是二進制數據的表示。它對你沒有用處。您需要專門使用API​​來加載和遍歷Word文件,這是Apache POI或docx4j的用途。

'docx'文件是一種較新的基於XML的Microsoft Office格式。 docx文件本質上是一個壓縮文件夾,其中包含組成Word文件的各種資產。

正如我所說,爲了正確讀取Word文件,您將需要使用上述庫中的一個。 Apache和docx4j網站都包含大量示例代碼,以便您開始打開和遍歷Word文檔(請注意,POI可以使用舊的.doc格式,而docx4j僅適用於.docx文件)。

http://www.docx4java.org

http://poi.apache.org