2015-01-21 1 views
-1

я получаю это исключение при попытке чтения из файла:файл не найден после броска IOException

ERROR: 
Exception in thread "main" java.io.FileNotFoundException: newfile.txt (No such file or directory) 
    at java.io.FileInputStream.open(Native Method) 
    at java.io.FileInputStream.<init>(FileInputStream.java:138) 
    at java.util.Scanner.<init>(Scanner.java:611) 
    at Postal.main(Postal.java:19) 


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

public class Postal { 

    public static void main(String[] args) throws Exception { 
     /*** Local Variables ***/ 
     String line; 
     Scanner filescan; 
     File file = new File("newfile.txt"); 
     filescan = new Scanner(file); 
     userInfo book = new userInfo(); 

     /*** Loop through newfile.txt ***/ 
     while (filescan.hasNext()) { 
      line = filescan.nextLine(); 
      book.addNew(line); 
     } 

     book.print(0); 
    } 

} 
+0

Вы получаете исключение во время выполнения, а не ошибка компилятора. Причина исключения, файл не найден в пути класса. –

+0

@JunedAsan) 1) yes (2) нет, он недоступен * в текущем каталоге. * – EJP

ответ

-1

Укажите абсолютный путь в том месте, где вы хотите создать файл. И убедитесь, что у пользователя есть права на создание файла. Один из способов, чтобы найти путь является:

File f = new File("NewFile.txt"); 
if (!f.exists()) { 
    throw new FileNotFoundException("Failed to find file: " + 
     f.getAbsolutePath()); 
} 

Попробуйте открыть файл:

File f = new File("/path-to-file/NewFile.txt"); 
+0

Вам не нужна проверка 'exists()'. Открытие файла уже делает это. – EJP

+0

@EJP вы должны попробовать это и посмотреть, что произойдет. Мне бы хотелось увидеть выход. – spooky

0

Класс Scanner использует FileInputStream прочитать содержимое файла , Но он не может найти файл, поэтому генерируется исключение. Вы используете относительный путь к файлу, попробуйте абсолютный.

0

Используйте вместо этого:

File file = new File(getClass().getResource("newfile.txt")); 
+0

Вы можете загрузить файл таким образом или обработать ошибки с помощью 'file.exists()'. –

+0

Это работает @ zgangwer20? –

+0

Он не будет компилироваться, поскольку getClass(). GetResource() требует URL-адреса, строка не может использоваться. – zgangwer20