Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> имя файла в java.io.FileNotFoundException 
V
    Опции темы
saneea
Дата 14.9.2011, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Если какие-либо стандартные средства Java не могут открыть файл, то летит java.io.FileNotFoundException. Это исключение предоставляет "монолитную" строку с именем файла и причиной типо того: "F5010.dat (The system cannot find the file specified)". Мне же нужно имя проблемного файла и причину в двух разных строках, неужели для этого придется парсить эту "монолитную" строку?
Спасибо!

p.s.: для сравнения, в .Net есть аналогичный System.IO.FileNotFoundException, но он предоставляет свойство FileName.

Это сообщение отредактировал(а) saneea - 14.9.2011, 11:27
PM MAIL   Вверх
Skipy
Дата 14.9.2011, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: 6
Всего: 16



Передавайте стандартным средствам объект типа java.io.File, они его, как правило, принимают наравне со строкой. Из такого объекта можно всё получить.


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
saneea
Дата 14.9.2011, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Возможно я плохо объяснил, возможно я плохо понял ответ, потому что не понимаю как java.io.File может мне помочь. Я хочу чтобы было примерно так:

Код

try
{
    //какой-то код работающий с файлом(и)
}
catch(java.io.FileNotFoundException e)
{
    String sFileName = e.getFileName();//вот такого метода getFileName() мне не хватает
    System.out.println("problem with file \"" + sFileName + "\"");
}


Т.е. по сути имеем только объект типа java.io.FileNotFoundException и больше ничего.

Это сообщение отредактировал(а) saneea - 14.9.2011, 13:29
PM MAIL   Вверх
COVD
Дата 14.9.2011, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Код

String sFileName = null;
try
{
    sFileName = .....
    //какой-то код работающий с файлом(и)
}
catch(java.io.FileNotFoundException e)
{
    System.out.println("problem with file \"" + sFileName + "\"");
}

PM MAIL   Вверх
saneea
Дата 14.9.2011, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Цитата(COVD @ 14.9.2011,  14:26)
Код

String sFileName = null;
try
{
    sFileName = .....
    //какой-то код работающий с файлом(и)
}
catch(java.io.FileNotFoundException e)
{
    System.out.println("problem with file \"" + sFileName + "\"");
}

К сожалению так тоже меня не устроит, потому что "//какой-то код работающий с файлом(и)" - это код, который вызывает функцию, которая может ещё вызвать кого-то и т.д., т.е. ловить исключение мне нужно в одном месте, а кинуться оно может во многих местах, соответственно имя проблемного файла в try{} мы знать не можем.
PM MAIL   Вверх
COVD
Дата 14.9.2011, 19:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

ловить исключение мне нужно в одном месте

Наверное, логично FileNotFoundException ловить именно в том месте, где имя файла определяется. Тогда такая конструкция вполне приемлема. А в секции catch можно создать и выбросить наверх новое исключение, если требуется все исключения обрабатывать в одном месте. Можно же создать свой класс, типа MyFileNotFoundException, в котором определить все необходимые поля и методы доступа. 
PM MAIL   Вверх
Nofate
Дата 14.9.2011, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 266
Регистрация: 13.10.2008

Репутация: 4
Всего: 8



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


--------------------
The future is not set, there is no fate but what we make for ourselves.
Нофейтово пространство и смежные области 
PM MAIL WWW ICQ   Вверх
Farmazon
Дата 15.9.2011, 05:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Разработчик
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 7.7.2006

Репутация: 1
Всего: 5



new File(sFileName).getName() не катит?


--------------------
Таково моё общее мнение.
PM MAIL WWW   Вверх
saneea
Дата 15.9.2011, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 205
Регистрация: 13.7.2005

Репутация: нет
Всего: 0



Цитата(COVD @ 14.9.2011,  19:30)
Цитата

ловить исключение мне нужно в одном месте

Наверное, логично FileNotFoundException ловить именно в том месте, где имя файла определяется. Тогда такая конструкция вполне приемлема. А в секции catch можно создать и выбросить наверх новое исключение, если требуется все исключения обрабатывать в одном месте. Можно же создать свой класс, типа MyFileNotFoundException, в котором определить все необходимые поля и методы доступа.

Ну вот по видимому так и придется делать... хотя это слегка раздует код + нужно не забыть сделать такую "обёртку" во всех местах + не забывать делать такую "обёртку" при появлении таких новых мест.

Цитата

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

нет, код свой, но не хотелось его перелопачивать, но по видимому придётся.

Цитата

new File(sFileName).getName() не катит?

Не понимаю как это можно использовать. У меня ведь нет sFileName, если я просто поймал java.io.FileNotFoundException.

Всем спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.