Java - как получить доступ к ресурсу Excel, не имея класса в том же каталоге? - PullRequest
3 голосов
/ 11 января 2011

Я запутался, как получить доступ к файлу Excel в моем каталоге. Я использую Netbean 6.9 + GlassFish v3 bundle.

project
  |
  |----web
  |----src
        |---local.test.jaxrs
                  |
                  |-----ExcellaTestResource
                  |-----myTemplate.xls

Как и выше, я подумал , если файл excel находится в том же каталоге, что и класс ресурсов (т.е. ExcellaTestResource), я могу успешно получить файл Excel.

URL templateFileUrl = ExcellaTestResource.class.getResource("myTemplate.xls");

Но, конечно, не стоит смешивать класс Java и файл Excel в одном каталоге.

Итак, я переместил файл Excel в project/web/myTemplate.xls

project
      |
      |----web
      |     |-----------myTemplate.xls //new location
      |
      |----src
            |---local.test.jaxrs
                      |
                      |-----ExcellaTestResource
                      |

Теперь я не могу использовать метод getResource(), поскольку myTemplate.xls не находится в том же каталоге, что и класс Java ExcellaTestResource: (

Возможно, я мог бы предоставить полный URL-адрес к m yTemplate.xls, как будто ... не так.

URL location = new URL("C://User/mmm/foo/bar/project/web/myTemplate.xls") 

Итак, как я могу получить доступ к myTemplate.xls в новом месте (... web / myTemplate.xls)?

обновление

Я пытался использовать класс File, но мой тест показывает, что он не просматривает каталог моего намерения ..

 File myFile = new File("web/myTemplate.xls");

 System.out.println(myFile.getAbsolutePath());

C: \ Users \ м-takayashiki.netbeans \ 6,9 \ Config \ GF3 \ domain1 \ Web \ myTemplate.xls

Ответы [ 2 ]

1 голос
/ 11 января 2011

Одна возможность - project/web не в вашем CLASSPATH.

1 голос
/ 11 января 2011

Если вы поместите его в свои WEB-INF / классы, вы можете использовать getResourceAsStream () из контекста сервлета для получения InputStream.

Если вам нужно передать String из этого InputStream в другой класс, тогдапрочитайте содержимое, создайте строку и передайте ее.Я подумал, что ваш вопрос означает, что вы должны иметь возможность читать содержимое файла Excel из контекста вашего веб-приложения.

Это веб-приложение или нет?

A файлURL выглядит так: "file: /// c: /User/mmm/foo/bar/project/web/myTemplate.xls"

Но если вы хотите сделать это в веб-приложениипоместите файл Excel в WEB-INF / classes и используйте контекст сервлета для getResourceAsStream () и прочитайте содержимое, используя InputStream.Затем превратите эти байты в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...