Java filenotfoundexception询问直到找到文件

时间:2014-11-30 03:40:02

标签: java file exception

我必须编写一个支持扩展的程序。我有FileNotFound异常的问题。程序询问文件的名称。我的任务是在没有给定文件的情况下编写特殊信息,并再次询问,直到用户编写现有文件名。我知道如何写一个没有文件的特殊信息,但我不知道如何再次询问文件的名称(我只知道必须使用readNP方法完成)。 这是代码:

import.java.io.*;
import java.util.* ;

class Reading{
   static BufferedReader sysin =
           new BufferedReader(new InputStreamReader(System.in));

   String readNP() throws IOException{
   //  ask about file name
      System.out.print("file name ");
      String filename;
      filename = sysin.readLine() ;
      return filename.trim();

}

  void read(ArrayList<Double> a) throws IOException{
  // reading from file
    int nr=1 ;                  
    String name = readNP();
    BufferedReader br = new BufferedReader(new FileReader(name));
    String line;
    while ((line = br.readLine()) != null){
    a.add(new Double(line));
        nr++;
    }
    br.close() ;
  }
}

class Exceptions{
  static void average(ArrayList<Double> a){
      double s=0.0d;
      for (int i=0; i<a.size(); i++) 
      s+=a.get(i).doubleValue();
      System.out.println("average from numbers in table: "+s/a.size());
  }
  public static void main(String[] args)throws IOException{
      ArrayList<Double> a = new ArrayList<Double>();
      Reading r = new Reading();
      try{
      r.read(a);
      average(a);
      } catch(FileNotFoundException e){
          System.out.println("File not found");
      }
}
}

1 个答案:

答案 0 :(得分:0)

我会在readNP()函数中添加测试文件名的存在(以及它不是目录的名称):

String readNP() throws IOException{
//  ask about file name
    for (;;) {
        System.out.print("file name ");
        String filename;
        filename = sysin.readLine();
        File f = new File(filename);
        if (f.exists() && !f.isDirectory()) return filename.trim();
        System.out.println("file absent");  //message if the there is no file with this name
    }
}