Найти текстовые файлы в банке - PullRequest
0 голосов
/ 22 сентября 2009

У меня есть приложение, которое должно читать из текстового файла (используя FileInputStream). Текстовый файл находится в структуре каталогов относительно файла класса (например, "../textdir/text.txt"). Когда я запускаю его нормально (то есть, указав папку / bin, содержащую файл .class в cp), все работает нормально. Однако мне как-то нужно упаковать все в одну банку, и когда я запускаю банку, ничего не работает. Ошибка выглядит примерно так: «FileNotFOund: MyJar.jar! /Textdir/text.txt». Я запустил jar -tvf на jarfile, и текстовый файл действительно был внутри. Я прочитал, но не могу получить доступ к исходному коду.

Больше, чем пытаться решить мою проблему (я думаю, что есть много обходных путей), может кто-нибудь объяснить мне, как все это работает? Как баночка ищет файлы? Что если я захочу прочитать из текущего рабочего каталога командной строки вместо каталога .class в файле jar? Кроме того, у меня недавно была похожая проблема с загрузкой ресурсов, когда я конвертировал не jar-проект в jar, как это работает?

1 Ответ

2 голосов
/ 22 сентября 2009

Вместо того, чтобы открывать файл как FileInputStream, используйте getResourceAsStream , который будет работать в обоих ваших контекстах, т.е. в файле jar или в распакованном виде.

...