如何在Java中使用Buffered Reader

Chr*_*son 42 java bufferedreader

对不起,如果这是一个显而易见的问题,但我似乎无法得到它.我正在为数据结构课程分配工作.它涉及从简单的.dat文件中提取数据.我们之前从未使用过Java中的任何文件访问选项,所以教授只是给了我们这篇文章的工作代码.因此,一个名为'FileReadExample'的类创建一个新的缓冲读取器对象,打开一个文件,然后应该发出一堆关于该文件的数据.但我根本无法访问任何数据.在一个单独的testMain文件中,我创建了一个名为fr的新FileReadExample对象,然后尝试从那里打印出像fr.readLine()这样的东西,但它告诉我没有这样的方法.我敢肯定我错过了一些非常容易的东西.

编辑 - 教授代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class FileReadExample
{
    public static void main(String[] args)
    {
        System.out.println("got here");
        try
        {
            BufferedReader in = new BufferedReader(new FileReader(new File("sample-file.dat")));
            System.out.println("File open successful!");

            int line = 0;
            for (String x = in.readLine(); x != null; x = in.readLine())
            {
                line++;
                System.out.println(x);
                if (line <= 3)
                {
                    String[] tokens = x.split(" ");
                    System.out.println("Number of tokens in line " + line + ": " + tokens.length);
                    System.out.println("The tokens are:");
                    for (String token : tokens)
                    {
                        System.out.println(token);
                    }
                }
                else
                {
                    String[] tokens = x.split("\\|");
                    System.out.println("Number of tokens in line " + line + ": " + tokens.length);
                    System.out.println("The tokens are:");
                    for (String token : tokens)
                    {
                        System.out.println(token);
                    }
                    Integer[] values = new Integer[tokens.length];
                    Integer sum = 0;
                    for (int i = 0; i < tokens.length; i++)
                    {
                        sum += Integer.parseInt(tokens[i]);
                    }
                    System.out.println("Sum: " + sum);
                }
            }
        } catch (IOException e)
        {
            System.out.println("File I/O error!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以发布教授提供的代码,但我无法弄清楚如何在这些帖子中获得格式.我是否正确阅读,我必须在每行前面放置四个空格才能在此处正确格式化代码?有没有办法一次阻止一大堆代码?再一次,我觉得我错过了一些非常简单的东西.

谢谢.

Mat*_*ius 77

试试这个来读取文件:

BufferedReader reader = null;

try {
    File file = new File("sample-file.dat");
    reader = new BufferedReader(new FileReader(file));

    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }

} catch (IOException e) {
    e.printStackTrace();
} finally {
    try {
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您必须将代码放在try-catch块中,因为您要读取文件,并且可能会抛出异常 (6认同)
  • 我更新了我的代码; 现在开心?关于你自己的例子,请像我刚才那样恰当地关闭BufferedReader.在您的示例中,如果在br.readLine()期间抛出异常,BR将不会关闭. (4认同)
  • 如果读者在到达.close()时为空怎么办? (2认同)
  • 在关闭之前一个简单的`if(reader!= null)`检查就足够了. (2认同)