Вывод файла с проверкой цикла и блоком try catch

Возникли небольшие проблемы с выводом файлов и использованием try/catch. Я пытаюсь в основном сказать, что если пользователь вводит существующее имя файла, продолжайте цикл до тех пор, пока не будет введено действительное имя файла. Тем не менее, я не могу заставить его работать. Любые намеки на то, где я ошибаюсь? Пробовал перемещать начальное приглашение вокруг блока try, но разве это не сделало бы область доступной только в блоке try? По сути, у меня должно быть приглашение снаружи, чтобы оно было доступно для всех блоков try/catch? Хотя не уверен.

 import java.util.Scanner;
 import java.io.File;  
 import java.io.IOException;
 import java.io.PrintWriter;

 public class TestAccountWithException 
 {

    public static void main(String[] args) throws IOException 
    {

    // variable declaration
    String fileName;
    String firstName;
    String lastName;
    double balance;
    int id = 1122;
    final double RATE = 4.50;

    Scanner input = new Scanner(System.in);
    System.out.print("Please enter file name: ");
    fileName = input.next();
    File fw = new File(fileName);

    try 
        {

            // check if file already exists
            while(fw.exists()) 
            {
                System.out.print("File already exists. Enter valid file name: ");
                fileName = input.next();
                fw = new File(fileName);
            }   


            System.out.print("Enter your first name: ");
            firstName = input.next();

            System.out.print("Enter your last name: ");
            lastName = input.next();

            System.out.print("Input beginnning balance: ");
            balance = input.nextDouble();   

            // pass object to printwriter and use pw to write to the file
            PrintWriter pw = new PrintWriter(fw);

            // print to created file
            pw.println(firstName);
            pw.println(lastName);
            pw.println(balance);
            pw.println(id);
            pw.println(RATE);
            pw.close();
            //      System.out.print("Run program? (1) Yes (2) No: ");
            //      cont = input.nextInt();


        } catch (IOException e) {

            e.printStackTrace();

        }

    } // end main
  } // end class

person zeesh91    schedule 02.04.2014    source источник


Ответы (1)


Вы можете предпочесть использовать java.nio.file. С этим пакетом java 7 вы можете использовать как

while(true) {
  String fileName = input.next();
  Path path = Paths.get(fileName);
  if (Files.exists(path)) {
     try {
     // file exists 
     // your operations
     } catch {

     }
     break;
   } else {
      // not found
      fileName = input.next();
   }
 }
person Cahit Gungor    schedule 02.04.2014
comment
@javaaaaaa Ваш код работает, можете ли вы указать, есть ли у вас какие-либо ошибки. - person Cahit Gungor; 03.04.2014