2013-05-11 43 views
0

我修改了這個example來讀取文本區域中的txt文件,但我似乎在textarea中沒有輸出。在textarea中讀取文件時沒有輸出

我的代碼:

if (returnVal == JFileChooser.APPROVE_OPTION) { 
    File file = fc.getSelectedFile(); 

    BufferedReader br = null; 

    try { 

     String line; 
     br = new BufferedReader(new FileReader(file)); 

     while ((line = br.readLine()) != null) { 
      System.out.println(line); 
      stringTokenizer = new StringTokenizer(line, " "); 
      while (stringTokenizer.hasMoreElements()) { 
       String token = stringTokenizer.nextElement().toString(); 
      } 
     } 
     System.out.println("Done"); 
     textArea.read(br, null); 

    } 
    catch (IOException r) { 
     r.printStackTrace(); 
    } 
    finally { 
     try { 
      if (br != null) br.close(); 
     } 
     catch (IOException ex) { 
      ex.printStackTrace(); 
     } 
    } 

我似乎也沒有在控制檯的任何輸出。

+4

得到一個像樣的答案,最好的方法是創建一個簡單的程序,將編譯並運行對我們來說,這將證明你的問題,然後張貼在這裏你問題,[sscce](http://sscce.org)。 – 2013-05-11 17:55:59

+0

@HovercraftFullOfEels我知道我對這條線有問題 br = new BufferedReader(new FileReader(file)); 如果你能告訴我這是否是正確的閱讀一個完整的路徑或不會感激你 – 2013-05-11 17:58:32

+1

你爲什麼如此自信問題是在那一行?這對我來說似乎是正確的。 – Noe 2013-05-11 17:59:40

回答

0

你的答案就在這裏:

if (returnVal == JFileChooser.APPROVE_OPTION) { 
     File file = chooser.getSelectedFile(); 

     BufferedReader br = null; 

     try { 

      String line; 
      br = new BufferedReader(new FileReader(file)); 
      textArea.read(br, null); 

      while ((line = br.readLine()) != null) { 
       System.out.println(line); 
       StringTokenizer stringTokenizer = new StringTokenizer(line, 
         " "); 
       while (stringTokenizer.hasMoreElements()) { 
        String token = stringTokenizer.nextElement().toString(); 
       } 
      } 
      System.out.println("Done"); 

     } catch (IOException r) { 
      r.printStackTrace(); 
     } finally { 
      try { 
       if (br != null) 
        br.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 
+0

textArea.read()行應在讀取流中的所有數據之前進行。在你的情況br.readLine()讀取所有數據並從緩衝區中清除,所以你有空的buff。讀者,這就是爲什麼你沒有在你的文本框。注意:請始終記住,緩衝區將數據保存在內存(RAM)中,直到您讀取它爲止。 – 2013-05-11 18:36:17

+0

這是正確的,因爲他發佈的方式,似乎讀者在EOF位置,但是,我記得他說,在控制檯上,他沒有得到任何輸出,所以我認爲他指的是'System.out.println '部分... – Noe 2013-05-11 18:38:11

+0

你可以指出上面的程序在命令行上什麼都不打印,因爲緩衝區已經被textare的讀取方法清除了 – 2013-05-11 18:38:19

相關問題