Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: FileNotFoundException, хотя файл на месте.  (Прочитано 18084 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Vantuz-Subhuman
Участник

ru
Offline Offline
Пол: Мужской

« : 05-11-2009 09:09 » 

Здравствуйте. Делаю всё по книге, но компилятор всё-равно выдаёт ошибку:

Код:
import java.io.File;
import java.util.Scanner;

class Lame {
    public static void main(String[] args) {
        File file = new File("C:\\Java projects\\teaching\\lame\\bin\\file.txt");
        Scanner scan = new Scanner(file);

    }
}

-----------------------------------------------------------------------------------------------------
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
             Unhandled exception type FileNotFoundException

             at Lame.main(Lame.java:7)
-----------------------------------------------------------------------------------------------------

Хотя файл на месте, по этому самому пути.
Может кто знает, в чём проблема?
« Последнее редактирование: 05-11-2009 09:18 от Vantuz-Subhuman » Записан

«You should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 05-11-2009 09:20 » 

Эммм это под виндой?

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

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Vantuz-Subhuman
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 05-11-2009 09:51 » 

Да, всё под виндой.

Не помогает.

Код:
new File(C:\\temp\\file.txt);

Тоже не реботает.
Записан

«You should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 05-11-2009 10:06 » 

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

Без строчек:

Код:
        File file = new File("C:\\Java projects\\teaching\\lame\\bin\\file.txt");
        Scanner scan = new Scanner(file);

можешь компилировать? Закоментируй их по очереди.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Vantuz-Subhuman
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 05-11-2009 10:18 » 

При:

Код:
        File file = new File("C:\\Java projects\\teaching\\lame\\bin\\file.txt");
        // Scanner scan = new Scanner(file);

нормально компилируется. А при:

Код:
        // File file = new File("C:\\Java projects\\teaching\\lame\\bin\\file.txt");
        Scanner scan = new Scanner(file);

само собой выдаёт:
---------------------------------------------------------
    file cannot be resolved
---------------------------------------------------------

Код:
new Scanner(System.in);

работает нормально.
Записан

«You should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 05-11-2009 10:36 » 

А версия Jаva  у тебя какая?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Vantuz-Subhuman
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 05-11-2009 10:40 » 

1.6.0
update 16
Записан

«You should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 05-11-2009 10:52 » 

Уже есть новее.
http://java.sun.com/javase/downloads/index.jsp

Попробуй сначала их поставить и вобще проверь свою инсталляцию. Может чего забыл? Потому что так вроде всё правильно.

На всякий случай сделай с отлавливанием исключения типа:

Код:
   import java.io.File;
   import java.io.FileNotFoundException;   // это добавить
   import java.util.Scanner;

...
        try
       {
         File file = new File(fileName);
         Scanner scanner = new Scanner(file);
         while (scanner.hasNext())
         {
           System.out.println(scanner.next());
         }
         scanner.close();
       }
       catch (FileNotFoundException e)
       {
         e.printStackTrace();
       }
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Vantuz-Subhuman
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 05-11-2009 11:17 » 

ДА! Спасибо.
С try-catch ветвью всё работает.
Находит файл, достаёт содержимое.

Конечно на будущее было бы неплохо узнать, почему так происходит.
Записан

«You should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #9 : 05-11-2009 11:40 » 

Шекспир устами Гамлета как-то сказал: "Есть, друг Горацио, на свете вещи, которые не снились вашим мудрецам" (с)

Я тоже не понимаю каким боком try-catch здесь помогает. Ф-я которую я привёл работает? Попробуй ради интереса закоментить закрытие и вобще весь while-цикл. У меня такое подозрение, что это в scanner.close(); зарыто.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Vantuz-Subhuman
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 05-11-2009 12:31 » 

Всё работает и без закрытия и без while'а:

Код:
File file = new File(fileName);
try
    {
      Scanner scanner = new Scanner(file);
      System.out.println(scanner.nextLine());
    }
    catch (FileNotFoundException e)
    {
      e.printStackTrace();
    }
Записан

«You should never underestimate the predictability of stupidity»,
«Never attribute to malice that which can be adequately explained by stupidity»
Asver
Постоялец

by
Offline Offline
Пол: Мужской

« Ответ #11 : 05-11-2009 12:32 » 

Просто твой код может генерировать исключение FileNotFoundException. В Java исключения игнорировать нельзя. Можно их перехватить и обработать (как сделал ты), а можно передать на обработку на уровень выше. Во втором случае надо метод, в котором может быть возбуждено исключение обьявить как:
Код:
public static void main(String[] args) throws FileNotFoundException {
        File file = new File("C:\\Java projects\\teaching\\lame\\bin\\file.txt");
        Scanner scan = new Scanner(file);

    }
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #12 : 05-11-2009 12:33 » 

Ок. В таких случах я говорю себе: "Таков, увы, закон природы." и не пытаюсь понять ПОЧЕМУ? Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 05-11-2009 14:14 » new

"Таков, увы, закон природы." и не пытаюсь понять ПОЧЕМУ? Ага
в мемориз!

я стал замечать за собой - особо ценные фразы с форума начинают жить со мной.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines