powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Файлы из папки resources
40 сообщений из 40, показаны все 2 страниц
Файлы из папки resources
    #38777037
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.

Вопрос очень простой и потому мне стыдно задавать его более опытным товарищам. В папке resources я положил несколько шаблонных файлов. Если при запуске к ним указывать прямой (полный) путь, то все работает ок. Также работает, если указать путь относительно Working Directory в настройках Run/Edit Configurations.

Мне же хотелось бы указывать имя файла в папке resources, тем более, что в настройках проекта эта папка у меня настроена, как папка ресурсов.

Гугл выдает Мавен, JSF, Spring и т. д. У меня же намного все примитивнее, но тем не менее даже примитивное должно работать должным образом
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777040
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Class.getResourceAsStream()
ClassLoader.getResourceAsStream()
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777064
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczClass.getResourceAsStream()
ClassLoader.getResourceAsStream()

А если мне нужны файлы по названиям (чтобы передать их как параметр), а не InputStream
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777069
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoА если мне нужны файлы по названиям (чтобы передать их как параметр), а не InputStream
Можно getResource(), но лично мне он не импонирует, и я его стараюсь избегать.
Локальные пути в проекте это строки. На худой конец URI.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777080
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще маленькая деталь - getResource может вернуть не только файл. Например, resources может быть запакован в jar файл.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777091
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfЕще маленькая деталь - getResource может вернуть не только файл. Например, resources может быть запакован в jar файл.
getResource() не может "вернуть файл". Только URL. Просто в некоторых экзотических средах может оказаться что системного хэндлера для такого URL не предусмотрено, его только ClassLoader понимает.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777096
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

не совсем :)
Попробуйте для ресурса из jar-файла вызвать classLoader.getResource(resName).getFile()
Получите исключение, что URL до ресурса в jar-нике нельзя преобразовать в файл.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777112
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfПопробуйте для ресурса из jar-файла вызвать classLoader.getResource(resName).getFile()

Да, с фига ли???

scfПолучите исключение, что URL до ресурса в jar-нике нельзя преобразовать в файл.
URL getFile() это не java.io.File а конкретная часть пути URL. Извольте объясниться.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777135
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут проблема в том, что это не какое-то консольное приложение. А большой проект, состоящий из кучи проектов.

Проект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777158
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoТут проблема в том, что это не какое-то консольное приложение. А большой проект, состоящий из кучи проектов.
Нет. Тут проблема в том что вы не пытаетесь объяснить что именно вы делаете. А бодаетесь с граблями, которые себе сами же и подложили.

GeronemoПроект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого.
О переносе на другой контейнер и речи ведь не может быть. Правда?
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777232
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczGeronemoТут проблема в том, что это не какое-то консольное приложение. А большой проект, состоящий из кучи проектов.
Нет. Тут проблема в том что вы не пытаетесь объяснить что именно вы делаете. А бодаетесь с граблями, которые себе сами же и подложили.


Коммерческая тайна, понимаете ли ))

Ладно. Чуть больше инфы. Надо построить несколько отчетов в excel. Вся логика для этого уже готова (т. е. у меня есть уже данные в удобном для меня виде). Осталось запихать их в excel документ. Для этого есть несколько файлов-шаблонов excel. Им надо где-то располагаться. Логично, что в папке resources. И нужен простой и безотказный доступ к ним. Чтобы не было так, что у меня на моей машине все работало, а при эксплуатации полетели исключения, типа файл не найден и т. д.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777280
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

Каюсь, я все перепутал :-)
Обычно File получают из URL вот так:
new File(url.toURI())
Но для ресурсов в classpath-e ClassLoader.getResource может вернуть URL с протоколом jar:file:/, который, естественно, в File преобразовать не получится.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777360
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoИ нужен простой и безотказный доступ к ним. Чтобы не было так, что у меня на моей машине все работало, а при эксплуатации полетели исключения, типа файл не найден и т. д.
Вот он:
16706123
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777477
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczGeronemoИ нужен простой и безотказный доступ к ним. Чтобы не было так, что у меня на моей машине все работало, а при эксплуатации полетели исключения, типа файл не найден и т. д.
Вот он:
16706123

Вы уж простите, если не понимаю Вас, не не то это.

Вы мне предлагаете получить некий InputStream по аргументу некоего String'а, а мне же надо
получить String, который можно было бы передать в функцию (таков ее формат) и она нашла бы по данному адресу (в папке resources) файл.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777511
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoВы уж простите, если не понимаю Вас, не не то это.

То. Вы просто странно как-то его интерпретируете.

GeronemoВы мне предлагаете получить некий InputStream по аргументу некоего String'а, а мне же надо
InputStream - ресурс.
String - идентификатор ресурса aka путь.

Geronemoполучить String, который можно было бы передать в функцию (таков ее формат)
идентификатор ресурса aka путь - смотри выше.

Geronemoи она нашла бы по данному адресу (в папке resources) файл.
А из файла она потом получает InputStream, так почему бы сразу ей не найти этот InputStream?

И что "кривое" API такое требует "файл"? Вы понимаете что ресурс запакованый в jar или war это уже не файл файловой системы?
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777623
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoПроект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого.У котяры есть "описатели развёртывания" - xml-файлы, где можно использовать ${catalina.base} и прочие свойства .
Контейнер самостоятельно развернёт их в строковые значения. Для catalina.base - в абсолютный путь, даже если в строке запуска указан относительный.

P.S. Отвыкайте использовать catalina.home в своих проектах.
Как максимум - развернуть контекст с документацией самого Tomcat.

P.P.S. Предполагается, что Tomcat - старше 5.5.36
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777925
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. SidorovGeronemoПроект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого.У котяры есть "описатели развёртывания" - xml-файлы, где можно использовать ${catalina.base} и прочие свойства .
Контейнер самостоятельно развернёт их в строковые значения. Для catalina.base - в абсолютный путь, даже если в строке запуска указан относительный.

P.S. Отвыкайте использовать catalina.home в своих проектах.
Как максимум - развернуть контекст с документацией самого Tomcat.

P.P.S. Предполагается, что Tomcat - старше 5.5.36

ok, придется похоже со старшими что-то придумывать.

появился еще один вопрос. Тут дело наверно и в самом деле в немного корявом API того модуля работы с xls, который я выбрал.
В общем, 2-я проблема - API позволяет сохранить файл на диск. Но пользователю такое нафиг не надо, искать фиг знает где какой-то файл. Ему нужен открытый файл на мониторе.
Я придумал решение - сохраняю файл со случайным именем в папку TEMP -destFileName = tmpPath + '\\' + "tmp" + System.currentTimeMillis() + ".xls"
но теперь задача - этот файл запустить. Неважно чем. Просто какой-нибудь программой, ассоциированной с данным типом файлов под данной ОС.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777931
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Geronemoно теперь задача - этот файл запустить. Неважно чем. Просто какой-нибудь программой, ассоциированной с данным типом файлов под данной ОС.

Вот такое вот
SecurityManager securityManager = new SecurityManager();
securityManager.checkExec(destFileName);
выдает java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Users\IC5CE~1.BAK\AppData\Local\Temp\tmp1413387949488.xls" "execute")
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777966
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemo,
Ничего не понимаю. При скачке файлов Стандартный ослик спрашивает; Запустить или скачать.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38777974
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemook, придется похоже со старшими что-то придумыватьВ 5.5 механизм тоже работает, но там были странные странности, если использовать два свойства в одной строке.
Но, да, использовать 5.5 сейчас - странно.но теперь задача - этот файл запустить. Неважно чем. Просто какой-нибудь программой, ассоциированной с данным типом файлов под данной ОС.И что вам даёт "запуск" файла на сервере?
А если на клиенте, то почему это вас волнует, если вопрос "Сохранить или запустить" задаёт браузер?
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38793719
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На некоторое время вопрос был отложен, но опять всплыл.

Class.getResourceAsStream()
ClassLoader.getResourceAsStream()

Не работает.
Поясню проблему еще раз, более подробно. К клиент-серверном приложении надо сделать отчеты Excel. Для этого есть файл-шаблоне excel и он лежит в папке resources. Надо как-то получить его, загрузить в InputStream. Перепробовал кучу всяких возможных способов разных путей. Копировал файл-шаблон в пакет к классу, который занимается этим файлом. Ничего не работает.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38793752
6o6epYi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Geronemo,

Я делал вот так. Сначала я определяю точку старта приложения

String startDIR = System.getProperty("user.dir"); - вернет вам строку

а потом делаю так:

private final File licenseFile = new File(startDIR, "Мий файл или папка");

Таким образом можно свободно двигаться на любом компе.

(Кто думает что я ошибаюсь, возможно он будет прав, я тоже новичок в Джаве)
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38795348
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень странно, что на таком большом форуме никто не знает правильный ответ. Мне пришлось немного извращнуться и положить эксель-шаблоны в папку (=пакет) с файлом-классом-обработчиком этих файлов. Таким макаром все заработало. Но не уверен, что начальству понравится (мне вот не очень нравится). У нас тут нет аврала, чтобы все заработало любым путем. Хочется, чтоб все было правильно и на своих местах.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38795428
j_mik0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Geronemo,

Я сам не пробовал делать, то, что хотите Вы, может и не понял полностью Вас. Но, если у Вас не получется, то можно попробовать сделать такое:
Создать проперти файл и укажите там путь (и еще всякого, чтобы не использовался только для этого :)), если мавен используете для сборки, тогда почитайте про мавен и проперти файлы, я не особо помню детали. И потом в приложение считывать путь к файлу с проперти файл.

или может это поможет:
InputStream is = getClass().getClassLoader().getResourceAsStream("META-INF/logger.properties");
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38804504
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С вопросом домтупа к файлам я разобрался.

Теперь у меня такой вопрос. Как представить это юзеру. Сейчас у меня идет сохранение в папку Temp, но я так понимаю, что сохранение будет на сервер, а мне надо представить файл юзеру. И это из обычного класса, а не из сервлета.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38804517
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoС вопросом домтупа к файлам я разобрался.

Теперь у меня такой вопрос. Как представить это юзеру. Сейчас у меня идет сохранение в папку Temp, но я так понимаю, что сохранение будет на сервер, а мне надо представить файл юзеру. И это из обычного класса, а не из сервлета.
Судя по постановке задачи можно юзеру и на дискете принести.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38804646
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

А как вы хотите, чтобы я задачу поставил.
1. Есть клиент.
2. Он заходит по некому URL на сайт. Происходит аутентификация, он идет на некую страницу, которая от отображает какие-то данные (например список транзакций за последний месяц). Он изучает этот список и решает скачать его себе на комп.
3. На сервере запускается процесс формирования файла, он находится в памяти, либо его можно временно сохранить где-нибудь в темпе, не суть важно.
4. Теперь с сервера клиент должен этот файл как-то получить.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38804658
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoBlazkowicz,
А как вы хотите, чтобы я задачу поставил.
1. Есть клиент.
2. Он заходит по некому URL на сайт. Происходит аутентификация, он идет на некую страницу, которая от отображает какие-то данные (например список транзакций за последний месяц). Он изучает этот список и решает скачать его себе на комп.
3. На сервере запускается процесс формирования файла, он находится в памяти, либо его можно временно сохранить где-нибудь в темпе, не суть важно.
4. Теперь с сервера клиент должен этот файл как-то получить.
Ну, значит мы таки говорим о передаче файла из сервера в браузер по HTTP.

Тогда как объяснить следующее
GeronemoИ это из обычного класса, а не из сервлета.
Это требование откуда нарисовалось?

Почему "не из сервлета"?
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38804667
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemo3. На сервере запускается процесс формирования файла, он находится в памяти, либо его можно временно сохранить где-нибудь в темпе, не суть важно.
4. Теперь с сервера клиент должен этот файл как-то получить.
Чтобы что-то запустить на сервере нужен как раз Сервлет.
Он может (и уже через обычный класс - если так надо) Понять что от него хочет пользователь и сделать это.
В данном случае Пользователь должен высказать свое желание программе клиенту.
1. Программа клиент отправляет запрос Сервлету и говорит - начни готовить файлы.
2. Тем или иным способом узнает что Файлы готовы. Заодно узнает по какому URL их можно скачать.
3. И скачивает.

Сервлет из пп.1-2 (или сервлеты) кладут файлы куда-то. И придумывают URL по которому эти файлы будут доступны. Заодно объясняют системе авторизации, почему они должны быть доступны именно этому пользователю.

В кратце как-то так. А вместо имени файла хорошо подходит GUID и в подпапку с именем сессии (правда не всегда).
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38808016
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался с вопросом предоставления файла пользователю с помощью AbstractResource.

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

Все заработало, но осталось 2 хвоста.
1. Одно из значений таблицы имеет тип BigDecimal (именно таокео поле имеет Dto из базы данных). И при вставлении данных эта колонка остается пустой. Я в файле шаблона выставлял тип колонки - число, не помогло. Также я делал класс, аналогичный ДТО, с единственным изменением - String вместо BigDecimal. И когда я записываю в файл Список этого типа, то там вообще ничего не записывается, остается пустота.
2. Некоторые из данных полей являются довольно длинными и было бы неплохо, если бы текст разбивался на несколько строчек и высота ячейки менялась бы под это дело. У меня текст разбивается на несколько строчек, но высота ячейки увеличивается только у 1-й строчки. Остальные остаются той же высоты и надо заглядывать в каждое поле, чтобы посмотреть полный текст. Неудобно для конечного пользователя.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38808165
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemo,

а как вставляете данные в шаблон?
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38808260
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemoпрочитать файл-шаблон, запихать туда данные и выдать файл пользователю.
в шаблоне шапка и одна полностью отформатированная строка.
При вставке перед каждой строкой - копируйте строку в Excell.
Соответственно, все 500 строк будут с форматом - Переброска строк и автовысота ячеек.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38809670
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DDiverGeronemo,

а как вставляете данные в шаблон?

Map beans = new HashMap();

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");

beans.put("name", "Отчет " + sdf.format(date1) + " по " + sdf.format(date2));
beans.put("report", list);

InputStream inputStream = new FileInputStream(filename); // файл шаблона

XLSTransformer transformer = new XLSTransformer();
org.apache.poi.ss.usermodel.Workbook workbook = null;

workbook = transformer.transformXLS(InputStream, beans);

Вот тут описано, как чего делать http://jxls.sourceforge.net/reference/collections.html

Делаее workbook отсылается в класс, который предоставляет пользователю возможность сохранить его у себя на диске.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38809677
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123Geronemoпрочитать файл-шаблон, запихать туда данные и выдать файл пользователю.
в шаблоне шапка и одна полностью отформатированная строка.
При вставке перед каждой строкой - копируйте строку в Excell.
Соответственно, все 500 строк будут с форматом - Переброска строк и автовысота ячеек.
Это решило бы проблему, немного коряво, но все же. Только один вопрос - как копировать строку из java ?
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38809709
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geronemo,
Этот вариант с самим Excell (OLE)
Самый гибкий отчёт с подкрашиванием, итогами и т.д.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38810631
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем, все заработало.

Пришлось поизвращаться вот таким способом.

Sheet shууе = workbook.getSheetAt(0);

for (int i = 0; i < list.size(); i++) {
ObjectType obj = list.get(i);

Row row = sheet.createRow(i + 3);
Cell cell = row.createCell(0);
cell.setCellValue(obj .getName());
.......................
}
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38856227
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть еще один вопрос. Уже не про Excel, а вообще в общем виде.

Допустим у нас есть некий url, по которому находится новый файл. Как из Java приложения скачать его. Причем не на диск в файл, а чтобы пользователю появилось сообщение браузера - Открыть файл/Сохранить (Пользователь изначально сидит в браузере и мы динамически генерим ему ссылки).
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38856237
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GeronemoЕсть еще один вопрос. Уже не про Excel, а вообще в общем виде.

Допустим у нас есть некий url, по которому находится новый файл. Как из Java приложения скачать его. Причем не на диск в файл, а чтобы пользователю появилось сообщение браузера - Открыть файл/Сохранить (Пользователь изначально сидит в браузере и мы динамически генерим ему ссылки).

Код: java
1.
2.
3.
4.
5.
6.
HttpServletResponse r;
URL documentUrl;
...
r.setContentType("...");
r.setHeader("Content-Disposition", "...");
IOUtils.copy(documentUrl.openStream(), r.getOutputStream());



Правильные значения для Excel и Content-Disposition Attachment - нагуглить.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38857418
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, а чему у нас равно HttpServletResponse r;
Потому как у меня даже не компилируется такой, очевидный NPE

Кстати, у меня было в каком-то проекте Наследование от AbstractResource, сейчас изучаю, как это можно тут прикрутить.
...
Рейтинг: 0 / 0
Файлы из папки resources
    #38857618
Geronemo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все норм, нашел решение вопроса
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Файлы из папки resources
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]