我已经创建了一个小应用程序,它可以浏览我的文件系统来创建文件系统并将其显示为树(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。我不明白,我快疯了(hum..sorry)。
当我在web浏览器上输入http://localhost:8084/myapp/Dir时,目录的内容就会显示出来,而目录确实在http://localhost:8084/myapp/上
我真的真的需要一些支持。提前谢谢。
发布于 2011-05-11 16:59:45
假设您的webapp被部署为一个未打包的war,那么您可以在ServletContext对象上使用getRealPath()来获取给定webapp路径的实际文件系统路径。
所以从你的servlet内部:
File dir = new File(getServletContext().getRealPath("/Dir"));参见javadoc。
请注意,这不是一个好的实践,并且不会在任何应用服务器上工作,因为在运行它之前没有将它的WAR解压到文件系统上(例如Google App Engine)。
https://stackoverflow.com/questions/5961399
复制相似问题