2015-03-26 2 views
0

Как говорится в заголовке, я пытаюсь разрешить пользователю вводить имя файла, который они хотят выбрать, чтобы моя программа могла анализировать этот текстовый файл. Однако, когда я ввожу имя текстового файла, который является «test.txt», я получаю ошибку, не найденную в файле, файл находится в том же каталоге, что и класс, поэтому я настолько смущен, почему он не работает, я мог бы объяснить, что я делаю неправильно здесь?Попытка позволить пользователю выбрать текстовый файл с помощью сканера

Это код, у меня есть:

Scanner in = new Scanner(System.in); 
    System.out.print("Enter filename: "); 
    String filename = in.nextLine(); 
    File InputFile = new File(filename); 

    Scanner reader = new Scanner(InputFile); 

Ошибка:

Enter filename: test.txt //Here is what I have entered after being prompted. 
Exception in thread "main" java.io.FileNotFoundException: test.txt (The system cannot find the file specified) 

Спасибо!

+0

пытается с помощью всего пути к файлу (Л.Э. 'C:/Users/Me/text.txt') – ochi

+0

Java часто ищет файлы, в которых вы не ожидаете, что остерегаться. – JonasCz

+0

Имя файла добавляется к текущему рабочему каталогу, который является каталогом, в котором вы находитесь, когда вы запускаете программу, а не каталог, в котором находится файл класса. – RealSkeptic

ответ

1

Как для обработки FileNotFoundException

  1. If the message of the exception claims that there is no such file or directory, then you must verify that the specified is correct and actually points to a file or directory that exists in your system.

  2. If the message of the exception claims that permission is denied then, you must first check if the permissions of the file are correct and second, if the file is currently being used by another application.

  3. If the message of the exception claims that the specified file is a directory, then you must either alter the name of the file or delete the existing directory (if the directory is not being used by an application).

Важно:

For those developers that use an IDE to implement their Java applications, the relative path for every file must be specified starting from the level where the src directory of the project resides.

Примечание: Ваш вопрос номер один вариант.

Что я делаю для решения этой проблемы?

  1. Я обычно использую абсолютный путь который я не рекомендую, потому что это просто Micky Mouse работа.

  2. Используйте относительный путь, потому что ваша программа будет независимой от пути.

0

От ява документы:

общественного сканера (источник файла) бросает FileNotFoundException

конструирует новый сканер, который производит значения отсканированные из указанного файла. Байты из файла преобразуются в символы с использованием кодировки базовой платформы по умолчанию.

Параметры: источник - Файл для сканирования Броски: FileNotFoundException - если источник не найден

Вы должны просто позвонить

InputFile.createNewFile(); 

перед тем

Scanner reader = new Scanner(InputFile); 
Смежные вопросы