2017-09-27 88 views
1

我使用iText Pdf閱讀器閱讀pdf文件。之後,我正在綁定將內容保存在文本文件中。我正在使用以下代碼。但是這裏的內容並沒有寫入文件。在這裏,我一頁接一頁地閱讀整篇PDF,但是如果只讀一頁,那麼它正在寫入文件。爲什麼這段代碼無法將整個內容保存在指定的文本文件中。但是,此代碼打印控制檯中的所有內容。任何人都可以幫助請哪裏我錯了?無法使用java保存文本文件中的內容

public class PdfReadExample { 

    public static void main(String[] args) { 
     PdfReader reader; 
     String textFromPage; 
     BufferedWriter bw=null; 
     FileWriter fw=null; 

     try { 
      reader = new PdfReader("pdf location"); 
      int nPages=reader.getNumberOfPages(); 
      System.out.println(nPages); 
      for(int i = 1; i <=n Pages; i++){ 
       textFromPage = PdfTextExtractor.getTextFromPage(reader, i); 
       System.out.println("page" + i + " " + textFromPage); 
       fw = new FileWriter("input.txt", true); 
       bw = new BufferedWriter(fw); 
       bw.write(textFromPage); 

       System.out.println(textFromPage); 
      } 

      reader.close(); 
      bw.close(); 
      fw.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

回答

5

要創建的循環中新FileWriterBufferedWriter。在循環的開始只創建一個,並用它在循環內,所以不是

for(int i=1;i<=nPages;i++){ 
    textFromPage = PdfTextExtractor.getTextFromPage(reader, i); 
    System.out.println("page"+i+" "+textFromPage); 
    fw=new FileWriter("input.txt",true); 
    bw=new BufferedWriter(fw); 
    bw.write(textFromPage); 
    System.out.println(textFromPage); 
} 

fw=new FileWriter("input.txt",true); 
bw=new BufferedWriter(fw); 
for(int i=1;i<=nPages;i++){ 
    textFromPage = PdfTextExtractor.getTextFromPage(reader, i); 
    System.out.println("page"+i+" "+textFromPage); 
    bw.write(textFromPage); 
} 

另一個側面說明:使用的FileWriter創建一個使用系統編碼來寫一個作家文本到文件。這可能不是你想要使用的字符集。最好使用new OutputStreamWriter(FileOutputStream, String)並指定明確使用的字符集。

+0

只是一個小的補充 - 如果你出於某種原因需要在循環內創建'FileWriter'和'BufferedWriter'(我不知道爲什麼你需要,但這不是不可能的),你也應該在循環內關閉它們('bw.close()'和'fw.close()')。這會比@洛薩的建議效率低,因爲它會反覆打開和關閉文件,但這是一個可能的選擇。 – DaveyDaveDave

+0

感謝您的幫助。不過,我已經使用OutputStreamWriter(FileOutputStream,字符串),它很好。 –

+0

@MohammadHasan所以如果答案有幫助,而且事情正如預期的那樣工作,那麼您可能會接受答案,以便它從「開放式問題列表」中消失;-) – Lothar