2013-11-14 2 views
0

Я пытаюсь загрузить файл с именем SPY.txt в массив, но я даже не могу получить этот маленький фрагмент для работы.Сканер продолжает бросать FileNotFound Exception

Я не понимаю. Если f.exists - true, как сканер может выдать исключение из файла?

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

public class ScannerTest { 
    public static void main(String[] args) { 
     File f = new File (new File("SPY.txt").getAbsolutePath()); 
     System.out.println(f.exists()); 
     Scanner s = new Scanner(f); 
    } 
} 

Выход: True

Исключения в потоке "основной" java.lang.RuntimeException: Uncompilable исходного код - незарегистрированное java.io.FileNotFoundException исключения; должны быть пойманным или объявленная быть выброшен на scannertest.ScannerTest.main (ScannerTest.java:13)

Линия 13 является

Scanner s = new Scanner(f);

+0

Как вы это компилируете? –

+0

Я использую NetBeans. – user2991144

+0

Возможный дубликат [Неподтвержденное исключение java.io.FileNotFoundException ;?] (http://stackoverflow.com/questions/14777511/unreported-exception-java-io-filenotfoundexception) –

ответ

3

Ключ находится в сообщении об ошибке:

Исключение в потоке "основного" java.lang.RuntimeException: Uncompilable исходный код - незарегистрированный java.io.FileNotFoundException исключение; должен быть пойман или объявлен брошенным на scannertest.ScannerTest.main (ScannerTest.Java: 13)

Что это означает, что конструктор Сканер генерирует исключение, так что вам нужно, чтобы поместить его в Try/поймать блок, например, так:

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

public class ScannerTest { 
    public static void main(String[] args) { 
     //try block starts here 
     try { 
      File f = new File (new File("SPY.txt").getAbsolutePath()); 
      System.out.println(f.exists()); 
      Scanner s = new Scanner(f); 
     } 
     //catch the exception 
     catch(FileNotFoundException e) { 
      e.printStackTrace(); 
     } 

    } 
} 

Проверьте документацию here и here

+0

Wow. Спасибо. У моей оригинальной программы была попытка/наконец. Наверное, я должен прочитать эту попытку. Большое спасибо за Вашу помощь. – user2991144

1

Вы не получаю исключение, что Файл не найден, вы получаете сообщение об ошибке Неисполнительный исходный код, потому что вы не обрабатывали исключение .

У вас есть "Необработанное исключение типа" FileNotFoundException в:

new Scanner(f) 

Solutions:

  1. Surround с try-catch.
  2. Объявление main до throwFileNotFoundException.

//1 
try { 
    File f = new File (new File("SPY.txt").getAbsolutePath()); 
    System.out.println(f.exists()); 
    Scanner s = new Scanner(f); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 

ИЛИ

//2 
public static void main(String[] args) throws FileNotFoundException { 
+0

Он вообще не получает исключения. Он получает ошибку компиляции. – EJP

+0

@EJP Я исправил это. – Maroun

+0

Код в вашем пересмотренном ответе по-прежнему бесполезен, так как '' 'не живет вне блока' try', а слово, которое должно быть выделено курсивом, не является «исключением», а «дескриптором». – EJP

4

FileNotFoundException является проверяемым исключение, которая брошена конкретного конструктора сканера. Либо объявите его с предложением throws, либо поставьте там блок try-catch.

Это не имеет никакого отношения к тому, существует ли файл или нет, но все, что связано с обработкой исключений в Java.

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