我创建了一个小应用程序来浏览我的文件系统以创建并将其显示为树(JTree)。现在我想对我服务器上的文件执行相同的操作。 我有一个Apache Tomcat服务器。 我想做的是:
File dir = new File(new URI("file://localhost:8084/myapp/Dir"));
File[] files = dir.listFiles();
for (File f : files) {
System.out.println(f.getAbsolutePath());
这只是一个例子,但我想使用java File API。
当我将此代码放在servlet中时,我收到此错误:
11 mai 2011 10:02:15 org.apache.catalina.core.StandardWrapperValve invoke "Servlet.service()" pour la servlet tests a généré une exception
java.lang.IllegalArgumentException: URI has an authority component
at java.io.File.<init>(File.java:385)
我不知道这意味着什么。
我还尝试了File dir = new File("Dir") ;
和File dir = new File("web/Dir")
甚至File dir = new File(new URI(http://localhost:8084/myapp/Dir
));
但未找到Dir。我不明白而且我很生气(哼哼......)。
当我在网络浏览器上输入http://localhost:8084/myapp/Dir
时,会显示Dir的内容。所以,Dir真的在http://localhost:8084/myapp/上
我真的需要一些备份。 提前谢谢。
答案 0 :(得分:2)
假设您的webapp被部署为解压缩的战争,那么您可以在getRealPath()
对象上使用ServletContext
来获取给定webapp路径的真实文件系统路径。
所以从你的servlet里面:
File dir = new File(getServletContext().getRealPath("/Dir"));
请参阅javadoc。
请注意,这不是一个好习惯,并且不适用于任何在运行它之前未将其解压缩到文件系统的应用程序服务器(例如Google App Engine)。