从控制台输入文件的名字然后用缓冲流读取,假如文件不存在就再次输入文件名字,这个过程中的br.close();的位置好像有讲究啊?如果第一次输入的是一个错误的文件名程序就会陷入一个死循环,求解释啊!!!!

public static void main( String args[]){

  String filename;

  boolean flag=false;

 

  while(!flag){

  try{

  System.out.println("请输入要打开的文件名");

  BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

  filename=br.readLine();

  br.close();

  FileInputStream is=new FileInputStream(filename);

  is.close();

 

  System.out.println("文件已经打开");

  flag=true;

 

  }catch(FileNotFoundException e2){

  System.out.println("文件不存在");

     }catch(IOException e1){

  System.out.println("读取文件名出错");

       

  }

  }

     }