![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Terentich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.11.2007 Репутация: нет Всего: нет |
Здравствуйте!
Очень нужно загрузить папку с ресурсами, однако, как я понимаю, метод getResource() позволяет лишь загружать конкретные файлы, а это мне не подходит. Подскажите, пожалуйста, возможные пути решения. |
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Изначально дописать нужную папку в classpath
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
Terentich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.11.2007 Репутация: нет Всего: нет |
Так и есть. Папка прописана в classpath, а мне нужны файлы внутри неё. Проблема в том, что точных имён файлов я не знаю, мне надо просмотреть что в папке лежит.
|
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Если знаете название папки, смотрите так:
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Неправильно понимаешь. Загружать позволяет getResourceAsStream(), а getResource() возвращает URL этого ресурса. Проанализировав этот URL (как минимум выяснив протокол) можно попытаться получить все соседние ресурсы. В твоем конкретном случае надо проверить, что протокол file, дальше new java.io.File(URI), getParent() и вперед. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
Terentich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.11.2007 Репутация: нет Всего: нет |
jk1, так не получится. Не могу указать абсолютный путь, потому что данный код выполняется библиотекой и все пути должны быть относительными, чтобы можно было использовать в других программах.
Если же укажу относительный путь, то метод listFiles() возвратит пустой массив, так как приложение будет выполнятся из другой папки - папки приложения. К примеру, я храню папку "icons" здесь: "C:/lib/icons". Для доступа к ней в библиотеке использую относительный путь "icons", но возникнет проблема, так как если запущу приложение из папки "C:/app", то библиотека будет искать папку по пути: "C:/app/icons", что неверно. LSD, спасибо, но getResourceAsStream() и getResource() вернули null. :( Это сообщение отредактировал(а) Terentich - 16.1.2010, 19:54 |
|||
|
||||
dorogoyIV |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
ну тогда для начала нужно найти файлы, оттуда получить абсолютные пути, ну и т.д. ...
|
|||
|
||||
Terentich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.11.2007 Репутация: нет Всего: нет |
Как же я могу найти файлы, если мне неизвестно содержимое папки "icons"?
В том-то вся и проблема, что я знаю лишь имя папки, а мне нужно её содержимое. |
|||
|
||||
jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Terentich, поставьте пожалуйста задачу конкретно. Например, так "Есть (сетевая, локальная) папка о которой известно ... . Нужно из её содержимого сделать.... ". Желательно с примером для большей ясности.
Об относительных путях: если относительный путь валиден, то за исключением некоторых случаев (зацикленных символических ссылок например) он может быть разрешен в абсолютный методом getAbsolutePath(); Это сообщение отредактировал(а) jk1 - 16.1.2010, 21:08 -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
Terentich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.11.2007 Репутация: нет Всего: нет |
Да, пожалуй, сумбурно описал.
![]() Пишу библиотеку, которую будут использовать другие программы, подключая её как jar-файл в classpath. В jar-файле библиотеки я храню локальную папку "icons" (об этой папке известно лишь то, что она содержит графические файлы). В самой библиотеке мне нужно получить ссылки на файлы из папки "icons". Как это сделать? Надеюсь, что понятно описал. Это сообщение отредактировал(а) Terentich - 16.1.2010, 21:48 |
|||
|
||||
Terentich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.11.2007 Репутация: нет Всего: нет |
Все же официальную документацию надо читать в первую очередь, столько времени убил. :(
Но это так мне и не помогло с загрузкой папки с ресурсами. Это сообщение отредактировал(а) Terentich - 17.1.2010, 00:43 |
|||
|
||||
dobrolub |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 11 Всего: 16 |
Здорово, коли ни шутишь.
InputStream с ресурса-директории просто будет содержать имена директорий и файлов, вот построчно их и читай. ![]()
Это сообщение отредактировал(а) dobrolub - 17.1.2010, 07:58 |
||||||
|
|||||||
Terentich |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 24.11.2007 Репутация: нет Всего: нет |
dobrolub, не выходит.
Метод
возвращает null. Я работаю в Eclipse и эту папку подключаю как "Class folder" (Java Build Path -> Add Class folder), т. е. как папку, содержащую классы. Может быть это неверно? |
|||
|
||||
dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 11 Всего: 16 |
Возможно eclipse немного углубился в директории при добавлении и добавил вместо корня первую папку под корнем.
Например если у тебя пакет x/y/z находящийся в папке /tmp то надо убедится, что именно папка /tmp добавлена, а не папка /tmp/x Посмотри на тест- проект в прикреплённом test.jar Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Потому, что он возвращает именно Resource, а не папку или еще какую подобную фигню. В принципе самый нормальный способ это создать файл со списком иконок (имя его разумеется фиксировано). Читать этот файл и уже тогда грузить иконки. Все остальное извраты с ClassLoader очень ненадежны. Если например твое приложение будет использоваться в апплете и ClassLoader будет сетевой, но никакого listFiles() там может и не быть. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |