在GAE类路径上读取配置文件

时间:2013-02-19 22:14:35

标签: java google-app-engine io filesystems

我们了解到您无法从GAE应用(限制版)访问java.io.File。但是,我记得在某个地方读过可以访问WAR中的任何内容(可能是WEB-INF/下的任何内容?)。

所以我问:有没有办法从GAE应用程序访问WAR内的文件?换句话说,如果我使用以下结构部署WAR:

MyApp/
    WEB-INF/
        web.xml
        appengine-web.xml
        ...etc.

        my-special-config.xml

我有什么方法可以从我的GAE应用程序中阅读my-special-config.xml吗?如果是这样,怎么和什么类?我在GAE SDK中看到有一个AppEngineFile,并想知道我是否可以使用它。提前谢谢。

2 个答案:

答案 0 :(得分:3)

查看开发指南here

  

文件系统

     

Java应用程序不能使用任何用于写入文件系统的类,例如java.io.FileWriter。应用程序可以使用java.io.FileReader等类从文件系统中读取自己的文件。应用程序还可以将自己的文件作为“资源”访问,例如使用Class.getResource()ServletContext.getResource()

     

应用程序只能通过文件系统访问被视为“资源文件”的文件。默认情况下,WAR中的所有文件都是“资源文件”。您可以使用appengine-web.xml文件从此集中排除文件。

在POJO类中读取classpath下的资源文件的示例代码:

String file = "/WEB-INF/my-special-config.xml";
InputStream in = getClass().getResourceAsStream(file);

在Servlet类中读取classpath下的资源文件的示例代码:

String file = "/WEB-INF/my-special-config.xml";
InputStream in = getServletContext().getResourceAsStream(file);

答案 1 :(得分:1)

看起来你可以像这样使用File类:

    String FileName = "my-special-config.xml";
    File file = new File(FileName);
    BufferedReader bufferedReader = new BufferedReader(new FileReader(file));

请参阅this