Java 在文本区域中读取文件时没有输出

Java 在文本区域中读取文件时没有输出,java,swing,file,io,jtextarea,Java,Swing,File,Io,Jtextarea,我修改了它,在文本区域中读取txt文件,但在文本区域中似乎没有输出 我的代码: if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); BufferedReader br = null; try { String line; br = new BufferedReader(new FileReader(file));

我修改了它,在文本区域中读取txt文件,但在文本区域中似乎没有输出

我的代码:

    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();
        }
    }
我似乎在控制台中也没有任何输出

您的答案如下:

    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();
            }
        }

要得到一个好的答案,最好的方法是创建一个简单的程序,为我们编译并运行,它将演示您的问题,然后将它发布在您的问题中。@HovercraftFullOfEels我知道我对这一行有问题br=new BufferedReader(new FileReader(file));如果你能告诉我阅读完整的路径是否正确,我会很感激你为什么你这么自信问题就在这一行?在我看来,这似乎是正确的。@Outflorks:由于我无法编译或运行您的代码,我不知道什么对您最合适。我必须自己创建一个SSCCE来为您解决这个问题,但我更希望您为我们付出努力,因为这毕竟是您的问题。作为一种风格偏好:您应该在第一个
try
块中关闭阅读器。或者更好的方法是,在从流中读取所有数据之前使用.textArea.read()行。在您的例子中,br.readLine()读取所有数据并从缓冲区中刷新它,这样您就得到了空buff。这就是为什么你的文本框里什么都没有。注意:请始终记住,缓冲区在您读取数据之前一直将数据保存在内存(RAM)中。这是正确的,因为他发布的方式似乎是读卡器处于EOF位置,但我记得他说过,在控制台上,他没有得到任何输出,所以我认为他指的是
System.out.println
部分……您可以指出,上面的程序在命令行上没有打印任何内容,因为textare的read方法已经刷新了缓冲区是的,但在他的示例中没有。在his上,输出应该被转储到控制台(因为他首先读取缓冲区),而在textArea上没有。这将是预期的行为,但是,他说他在控制台或textArea上都没有得到任何信息。这是正确的答案,谢谢,虽然我有另一个逻辑错误,但仍然是这一行:textArea.read(br,null);位置是我的问题