如何解决java中的BufferReader问题

如何解决java中的BufferReader问题,java,io,bufferedreader,Java,Io,Bufferedreader,我已经有一段时间没有使用Java了,所以我正在阅读一本书。就我所知,下面的代码是正确的,但是我在编译它时遇到了困难。我以前使用的是扫描仪,但这本书采用了这种方法,我更愿意按照它来做解释过的练习,有人能看出这里有什么问题吗 import java.io.*; class ReadFile { public static void main( String[] args ) { try { FileReader file = new FileReader("Sheffield.d

我已经有一段时间没有使用Java了,所以我正在阅读一本书。就我所知,下面的代码是正确的,但是我在编译它时遇到了困难。我以前使用的是
扫描仪
,但这本书采用了这种方法,我更愿意按照它来做解释过的练习,有人能看出这里有什么问题吗

import java.io.*;

class ReadFile
{
public static void main( String[] args )
{

  try
  {
    FileReader file = new FileReader("Sheffield.data");
  }

  catch (IOException e)
  {
    System.out.println("A read error has ocurred" );
  }

  BufferedReader buffer = new BufferedReader(file);
  String line = "";

  while ((line = buffer.readLine()) != null)
  {
    System.out.println(line);
  }
  buffer.close();

}
}
我在Windows cmd中遇到的错误如下:

简单的错误我知道,任何帮助将不胜感激

修正

  BufferedReader buffer = new BufferedReader(file);
  String line = "";

  while ((line = buffer.readLine()) != null)
  {
    System.out.println(line);
  }
  buffer.close();

以上内容都应该放在
try
语句中的
FileReader file=newfilereader(“Sheffield.data”)

文件
变量在try块中创建,因此
BufferedReader buffer=new BufferedReader(文件)没有访问权限。在try之前创建引用,并在try块中实例化。

变量范围。名称
文件
仅在
try
块中可用。此问题已更新并已回答,我猜这就是问题所在。这本书指示在
try
之外执行
BufferReader
语句,但是后一个代码块需要移到内部。谢谢你的帮助是的,这正是我想的,但是这本书是怎么说的,Mike McGrath-Java在Easy Steps第四版。