我们了解到您无法从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
,并想知道我是否可以使用它。提前谢谢。
答案 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。