|
|
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Всем привет. Вопрос очень простой и потому мне стыдно задавать его более опытным товарищам. В папке resources я положил несколько шаблонных файлов. Если при запуске к ним указывать прямой (полный) путь, то все работает ок. Также работает, если указать путь относительно Working Directory в настройках Run/Edit Configurations. Мне же хотелось бы указывать имя файла в папке resources, тем более, что в настройках проекта эта папка у меня настроена, как папка ресурсов. Гугл выдает Мавен, JSF, Spring и т. д. У меня же намного все примитивнее, но тем не менее даже примитивное должно работать должным образом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:01 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Class.getResourceAsStream() ClassLoader.getResourceAsStream() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:03 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
BlazkowiczClass.getResourceAsStream() ClassLoader.getResourceAsStream() А если мне нужны файлы по названиям (чтобы передать их как параметр), а не InputStream ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:21 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoА если мне нужны файлы по названиям (чтобы передать их как параметр), а не InputStream Можно getResource(), но лично мне он не импонирует, и я его стараюсь избегать. Локальные пути в проекте это строки. На худой конец URI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:23 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Еще маленькая деталь - getResource может вернуть не только файл. Например, resources может быть запакован в jar файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:30 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
scfЕще маленькая деталь - getResource может вернуть не только файл. Например, resources может быть запакован в jar файл. getResource() не может "вернуть файл". Только URL. Просто в некоторых экзотических средах может оказаться что системного хэндлера для такого URL не предусмотрено, его только ClassLoader понимает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:39 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, не совсем :) Попробуйте для ресурса из jar-файла вызвать classLoader.getResource(resName).getFile() Получите исключение, что URL до ресурса в jar-нике нельзя преобразовать в файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:44 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
scfПопробуйте для ресурса из jar-файла вызвать classLoader.getResource(resName).getFile() Да, с фига ли??? scfПолучите исключение, что URL до ресурса в jar-нике нельзя преобразовать в файл. URL getFile() это не java.io.File а конкретная часть пути URL. Извольте объясниться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 11:55 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Тут проблема в том, что это не какое-то консольное приложение. А большой проект, состоящий из кучи проектов. Проект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 12:14 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoТут проблема в том, что это не какое-то консольное приложение. А большой проект, состоящий из кучи проектов. Нет. Тут проблема в том что вы не пытаетесь объяснить что именно вы делаете. А бодаетесь с граблями, которые себе сами же и подложили. GeronemoПроект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого. О переносе на другой контейнер и речи ведь не может быть. Правда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 12:29 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGeronemoТут проблема в том, что это не какое-то консольное приложение. А большой проект, состоящий из кучи проектов. Нет. Тут проблема в том что вы не пытаетесь объяснить что именно вы делаете. А бодаетесь с граблями, которые себе сами же и подложили. Коммерческая тайна, понимаете ли )) Ладно. Чуть больше инфы. Надо построить несколько отчетов в excel. Вся логика для этого уже готова (т. е. у меня есть уже данные в удобном для меня виде). Осталось запихать их в excel документ. Для этого есть несколько файлов-шаблонов excel. Им надо где-то располагаться. Логично, что в папке resources. И нужен простой и безотказный доступ к ним. Чтобы не было так, что у меня на моей машине все работало, а при эксплуатации полетели исключения, типа файл не найден и т. д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 13:05 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Каюсь, я все перепутал :-) Обычно File получают из URL вот так: new File(url.toURI()) Но для ресурсов в classpath-e ClassLoader.getResource может вернуть URL с протоколом jar:file:/, который, естественно, в File преобразовать не получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 13:26 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoИ нужен простой и безотказный доступ к ним. Чтобы не было так, что у меня на моей машине все работало, а при эксплуатации полетели исключения, типа файл не найден и т. д. Вот он: 16706123 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 14:07 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
BlazkowiczGeronemoИ нужен простой и безотказный доступ к ним. Чтобы не было так, что у меня на моей машине все работало, а при эксплуатации полетели исключения, типа файл не найден и т. д. Вот он: 16706123 Вы уж простите, если не понимаю Вас, не не то это. Вы мне предлагаете получить некий InputStream по аргументу некоего String'а, а мне же надо получить String, который можно было бы передать в функцию (таков ее формат) и она нашла бы по данному адресу (в папке resources) файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 15:12 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoВы уж простите, если не понимаю Вас, не не то это. То. Вы просто странно как-то его интерпретируете. GeronemoВы мне предлагаете получить некий InputStream по аргументу некоего String'а, а мне же надо InputStream - ресурс. String - идентификатор ресурса aka путь. Geronemoполучить String, который можно было бы передать в функцию (таков ее формат) идентификатор ресурса aka путь - смотри выше. Geronemoи она нашла бы по данному адресу (в папке resources) файл. А из файла она потом получает InputStream, так почему бы сразу ей не найти этот InputStream? И что "кривое" API такое требует "файл"? Вы понимаете что ресурс запакованый в jar или war это уже не файл файловой системы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 15:27 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoПроект работает под Томкат, мне предложили такой вариант System.getProperty("catalina.home") и дальше плясать от этого.У котяры есть "описатели развёртывания" - xml-файлы, где можно использовать ${catalina.base} и прочие свойства . Контейнер самостоятельно развернёт их в строковые значения. Для catalina.base - в абсолютный путь, даже если в строке запуска указан относительный. P.S. Отвыкайте использовать catalina.home в своих проектах. Как максимум - развернуть контекст с документацией самого Tomcat. P.P.S. Предполагается, что Tomcat - старше 5.5.36 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 16:26 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
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" но теперь задача - этот файл запустить. Неважно чем. Просто какой-нибудь программой, ассоциированной с данным типом файлов под данной ОС. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 19:37 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
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") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 19:46 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemo, Ничего не понимаю. При скачке файлов Стандартный ослик спрашивает; Запустить или скачать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 20:53 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemook, придется похоже со старшими что-то придумыватьВ 5.5 механизм тоже работает, но там были странные странности, если использовать два свойства в одной строке. Но, да, использовать 5.5 сейчас - странно.но теперь задача - этот файл запустить. Неважно чем. Просто какой-нибудь программой, ассоциированной с данным типом файлов под данной ОС.И что вам даёт "запуск" файла на сервере? А если на клиенте, то почему это вас волнует, если вопрос "Сохранить или запустить" задаёт браузер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2014, 21:06 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
На некоторое время вопрос был отложен, но опять всплыл. Class.getResourceAsStream() ClassLoader.getResourceAsStream() Не работает. Поясню проблему еще раз, более подробно. К клиент-серверном приложении надо сделать отчеты Excel. Для этого есть файл-шаблоне excel и он лежит в папке resources. Надо как-то получить его, загрузить в InputStream. Перепробовал кучу всяких возможных способов разных путей. Копировал файл-шаблон в пакет к классу, который занимается этим файлом. Ничего не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 14:59 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemo, Я делал вот так. Сначала я определяю точку старта приложения String startDIR = System.getProperty("user.dir"); - вернет вам строку а потом делаю так: private final File licenseFile = new File(startDIR, "Мий файл или папка"); Таким образом можно свободно двигаться на любом компе. (Кто думает что я ошибаюсь, возможно он будет прав, я тоже новичок в Джаве) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 15:40 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Очень странно, что на таком большом форуме никто не знает правильный ответ. Мне пришлось немного извращнуться и положить эксель-шаблоны в папку (=пакет) с файлом-классом-обработчиком этих файлов. Таким макаром все заработало. Но не уверен, что начальству понравится (мне вот не очень нравится). У нас тут нет аврала, чтобы все заработало любым путем. Хочется, чтоб все было правильно и на своих местах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 17:06 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemo, Я сам не пробовал делать, то, что хотите Вы, может и не понял полностью Вас. Но, если у Вас не получется, то можно попробовать сделать такое: Создать проперти файл и укажите там путь (и еще всякого, чтобы не использовался только для этого :)), если мавен используете для сборки, тогда почитайте про мавен и проперти файлы, я не особо помню детали. И потом в приложение считывать путь к файлу с проперти файл. или может это поможет: InputStream is = getClass().getClassLoader().getResourceAsStream("META-INF/logger.properties"); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2014, 18:16 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
С вопросом домтупа к файлам я разобрался. Теперь у меня такой вопрос. Как представить это юзеру. Сейчас у меня идет сохранение в папку Temp, но я так понимаю, что сохранение будет на сервер, а мне надо представить файл юзеру. И это из обычного класса, а не из сервлета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 11:05 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoС вопросом домтупа к файлам я разобрался. Теперь у меня такой вопрос. Как представить это юзеру. Сейчас у меня идет сохранение в папку Temp, но я так понимаю, что сохранение будет на сервер, а мне надо представить файл юзеру. И это из обычного класса, а не из сервлета. Судя по постановке задачи можно юзеру и на дискете принести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 11:09 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, А как вы хотите, чтобы я задачу поставил. 1. Есть клиент. 2. Он заходит по некому URL на сайт. Происходит аутентификация, он идет на некую страницу, которая от отображает какие-то данные (например список транзакций за последний месяц). Он изучает этот список и решает скачать его себе на комп. 3. На сервере запускается процесс формирования файла, он находится в памяти, либо его можно временно сохранить где-нибудь в темпе, не суть важно. 4. Теперь с сервера клиент должен этот файл как-то получить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 12:15 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoBlazkowicz, А как вы хотите, чтобы я задачу поставил. 1. Есть клиент. 2. Он заходит по некому URL на сайт. Происходит аутентификация, он идет на некую страницу, которая от отображает какие-то данные (например список транзакций за последний месяц). Он изучает этот список и решает скачать его себе на комп. 3. На сервере запускается процесс формирования файла, он находится в памяти, либо его можно временно сохранить где-нибудь в темпе, не суть важно. 4. Теперь с сервера клиент должен этот файл как-то получить. Ну, значит мы таки говорим о передаче файла из сервера в браузер по HTTP. Тогда как объяснить следующее GeronemoИ это из обычного класса, а не из сервлета. Это требование откуда нарисовалось? Почему "не из сервлета"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 12:19 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemo3. На сервере запускается процесс формирования файла, он находится в памяти, либо его можно временно сохранить где-нибудь в темпе, не суть важно. 4. Теперь с сервера клиент должен этот файл как-то получить. Чтобы что-то запустить на сервере нужен как раз Сервлет. Он может (и уже через обычный класс - если так надо) Понять что от него хочет пользователь и сделать это. В данном случае Пользователь должен высказать свое желание программе клиенту. 1. Программа клиент отправляет запрос Сервлету и говорит - начни готовить файлы. 2. Тем или иным способом узнает что Файлы готовы. Заодно узнает по какому URL их можно скачать. 3. И скачивает. Сервлет из пп.1-2 (или сервлеты) кладут файлы куда-то. И придумывают URL по которому эти файлы будут доступны. Заодно объясняют системе авторизации, почему они должны быть доступны именно этому пользователю. В кратце как-то так. А вместо имени файла хорошо подходит GUID и в подпапку с именем сессии (правда не всегда). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 12:23 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Разобрался с вопросом предоставления файла пользователю с помощью AbstractResource. Теперь есть такой вопрос. Не помню, писал ли я выше, но задача, которую я решаю это экспорт данных в Excel файл Для этого мне надо было прочитать файл-шаблон, запихать туда данные и выдать файл пользователю. Все заработало, но осталось 2 хвоста. 1. Одно из значений таблицы имеет тип BigDecimal (именно таокео поле имеет Dto из базы данных). И при вставлении данных эта колонка остается пустой. Я в файле шаблона выставлял тип колонки - число, не помогло. Также я делал класс, аналогичный ДТО, с единственным изменением - String вместо BigDecimal. И когда я записываю в файл Список этого типа, то там вообще ничего не записывается, остается пустота. 2. Некоторые из данных полей являются довольно длинными и было бы неплохо, если бы текст разбивался на несколько строчек и высота ячейки менялась бы под это дело. У меня текст разбивается на несколько строчек, но высота ячейки увеличивается только у 1-й строчки. Остальные остаются той же высоты и надо заглядывать в каждое поле, чтобы посмотреть полный текст. Неудобно для конечного пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 11:31 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemo, а как вставляете данные в шаблон? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 13:05 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemoпрочитать файл-шаблон, запихать туда данные и выдать файл пользователю. в шаблоне шапка и одна полностью отформатированная строка. При вставке перед каждой строкой - копируйте строку в Excell. Соответственно, все 500 строк будут с форматом - Переброска строк и автовысота ячеек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 13:42 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
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 отсылается в класс, который предоставляет пользователю возможность сохранить его у себя на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:14 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Petro123Geronemoпрочитать файл-шаблон, запихать туда данные и выдать файл пользователю. в шаблоне шапка и одна полностью отформатированная строка. При вставке перед каждой строкой - копируйте строку в Excell. Соответственно, все 500 строк будут с форматом - Переброска строк и автовысота ячеек. Это решило бы проблему, немного коряво, но все же. Только один вопрос - как копировать строку из java ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:17 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Geronemo, Этот вариант с самим Excell (OLE) Самый гибкий отчёт с подкрашиванием, итогами и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:31 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
В общем, все заработало. Пришлось поизвращаться вот таким способом. 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()); ....................... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 12:38 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Есть еще один вопрос. Уже не про Excel, а вообще в общем виде. Допустим у нас есть некий url, по которому находится новый файл. Как из Java приложения скачать его. Причем не на диск в файл, а чтобы пользователю появилось сообщение браузера - Открыть файл/Сохранить (Пользователь изначально сидит в браузере и мы динамически генерим ему ссылки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 15:00 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
GeronemoЕсть еще один вопрос. Уже не про Excel, а вообще в общем виде. Допустим у нас есть некий url, по которому находится новый файл. Как из Java приложения скачать его. Причем не на диск в файл, а чтобы пользователю появилось сообщение браузера - Открыть файл/Сохранить (Пользователь изначально сидит в браузере и мы динамически генерим ему ссылки). Код: java 1. 2. 3. 4. 5. 6. Правильные значения для Excel и Content-Disposition Attachment - нагуглить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2015, 15:04 |
|
||
|
Файлы из папки resources
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а чему у нас равно HttpServletResponse r; Потому как у меня даже не компилируется такой, очевидный NPE Кстати, у меня было в каком-то проекте Наследование от AbstractResource, сейчас изучаю, как это можно тут прикрутить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2015, 12:19 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2125922]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 449ms |

| 0 / 0 |
