2013-02-08 2 views
0

Аналогичные вопросы касаются файлов на диске C:, где hardcoding путь к файлу является приемлемым ответом. Это приложение является мобильным, а hardcoding путь к файлу не является практичным.FileNotFoundException в то время как файл существует в той же папке, что и программа

Я пытаюсь импортировать текстовый файл через сканер, который содержит список строк, по 15 символов, по 1 на строку. Множество линий. Имя файла: a.txt.

Я называю это с помощью

File data = new File("a.txt"); 
Scanner in = new Scanner(data); 

повторил строки ниже с "b.txt", используя разные имена объектов.

Однако, когда я построить программу, я получаю этот журнал ошибок (с помощью JCreator IDE):

--------------------Configuration: <Default>-------------------- 
E:\Simple Encryption\Simple_Encryption.java:17: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown 
    Scanner in = new Scanner(data); 
       ^
E:\Simple Encryption\Simple_Encryption.java:18: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown 
    Scanner numsIn = new Scanner(nums); 
        ^
2 errors 

Process completed. 

Программа находится в папке E:/Simple Encryption/, которая содержит следующие файлы и папки:

  • Simple_Encryption.java
  • Simple_Encryption.class
  • lock.png (не используется)
  • a.txt
  • b.txt (такая же ошибка, как a.txt на импорт, только одна строка ниже)
  • /изображений (папка содержит icon.png)

Там нет ничего в папке , Я не могу жестко указать путь к файлу, потому что на разных компьютерах он имеет разные имена дисков и позже будет распространен в разных папках. (Здесь (школа), это на E: диске, дома это J: диск, так и на работе его на G: диске.)

Хотя я получил помощь от существующих ошибок, мне нужно импортировать это в программе запуска, а не просто пропустить его. Файл существует в текущей форме, и программа не может функционировать без него.

В чем причина этой ошибки? И что я могу сделать, чтобы предотвратить это?

ответ

1
E:\Simple Encryption\Simple_Encryption.java:17: unreported exception 
java.io.FileNotFoundException; must be caught or declared to be thrown 

Как ваши исключения говорят, что вы должны использовать поймать пытаясь угадать Заблокировать

try { 
    Scanner numsIn = new Scanner(nums); 
catch (FileNotFoundException e) { 
    // do something 
} finally { 
    if (numsIn != null) numsIn .close(); 
} 

ИЛИ

вам нужно выбросить это исключение, хотя вызова метода

public static void xxxx() throws FileNotFoundException { 
    // do something 
} 
1

проблема не исключение, которое бросается, но тот факт, что con stuctor объявляется как выбрасывающее исключение FileNotFoundException.

public Scanner(File source) throws FileNotFoundException 

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

Таким образом, вы должны заключить их в try/catch заявление:

Scanner in = null; 
try { 
    in = new Scanner(file); 
} 
catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
0

Как вы говорите, что файл существует, но он утверждает, что он не может найти файл. Попробуйте это:

System.out.println(data.getAbsolutePath()); 

Это должно позволить вам точно знать, где он ищет файл, а затем вы можете настроить приложение без использования полного пути

Смежные вопросы