对不起,如果这是一个显而易见的问题,但我似乎无法得到它.我正在为数据结构课程分配工作.它涉及从简单的.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:"); …System.in是提供用户输入数据的"标准"输入流.关闭后,无法重新打开此流.一个这样的例子是在使用扫描仪读取用户输入的情况下如下:
public class Test {
    public static void main(String[] args) {
        boolean finished;
        do {
            Scanner inputScanner = new Scanner(System.in);
            finished = inputScanner.hasNext("exit");
            boolean validNumber = inputScanner.hasNextDouble();
            if (validNumber) {
                double number = inputScanner.nextDouble();
                System.out.print(number);
            } else if (!finished) {
                System.out.println("Please try again.");
            }
            inputScanner.close();
        } while (!finished);
    }
}
在此示例中,Scanner创建了一个类型实例,用于从用户读取一系列数字(请忽略此代码的其他详细信息,超出此示例的范围,我知道应在循环外创建并关闭扫描程序).在从用户输入检索到数字之后Scanner,关闭该实例(即,输入流).但是,当从用户请求另一个号码并创建新实例时,无法再次打开输入流.在这个例子的情况下,它创建一个无限循环.
问题是:为什么不能重新打开封闭的流?
这是一个初学者问题.我是java新手,一直在浏览StackOverflow和CodeReview.我发现使用了这两种不同的格式:
例1:
public static void main(String args[])
或
示例2:  
public static void main(String[] args)
这就是我在课程笔记中的内容:
这些词被称为修饰语.main()方法前面还有单词void,表示它不返回任何值.main()方法总是有一个可以传递给程序的命令行参数列表
main(String [] args)
我们现在要忽略它.
所以,正如你所看到的,我们现在被告知要忽略它,但我想知道:
这些之间是否存在实际差异,如果是,那么什么?