Java - 如何在没有同一目录的类的情况下访问Excel资源?

时间:2011-01-11 02:03:33

标签: java resources path

我很困惑如何访问我的目录中的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不在同一目录中:(

我可能会提供m yTemplate.xls的完整网址路径,但是......不是正确的。

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

那么,如何在新位置(... web / myTemplate.xls)访问myTemplate.xls?

更新

我尝试使用File类,但我的测试显示它没有查看我的意图目录..

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

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

C:\用户\ M-takayashiki.netbeans \ 6.9 \配置\ GF3 \ domain1的\网络\ myTemplate.xls

2 个答案:

答案 0 :(得分:1)

如果将它放在WEB-INF / classes中,可以使用servlet上下文中的getResourceAsStream()来获取InputStream。

如果必须将String从该InputStream传递到另一个类,则读取其中的内容,创建一个String,然后传递它。我认为您的问题意味着您必须能够从您的Web应用程序上下文中读取Excel文件的内容。

这是否是一个网络应用程序?

file URL如下所示:“file:/// c:/User/mmm/foo/bar/project/web/myTemplate.xls”

但是如果你想在Web应用程序中执行此操作,请将Excel文件放在WEB-INF / classes中,并使用servlet上下文来获取getResourceAsStream()并使用InputStream读取内容。然后将这些字节转换为字符串。

答案 1 :(得分:1)

一种可能性project/web不在您的CLASSPATH中。