2013-05-11 47 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

相关问题