Java 对位于我的服务器中的文件使用文件API方法

Java 对位于我的服务器中的文件使用文件API方法,java,tomcat,servlets,file-io,Java,Tomcat,Servlets,File Io,我创建了一个小应用程序,它可以浏览我的文件系统,创建并显示为一棵树(JTree)。现在,我想对服务器上的文件执行相同的操作。 我有一个ApacheTomcat服务器。 我想做的是: File dir = new File(new URI("file://localhost:8084/myapp/Dir")); File[] files = dir.listFiles(); for (File f : files) { System.out.println(f.ge

我创建了一个小应用程序,它可以浏览我的文件系统,创建并显示为一棵树(JTree)。现在,我想对服务器上的文件执行相同的操作。 我有一个ApacheTomcat服务器。 我想做的是:

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文件API

当我将此代码放入servlet时,我遇到了此错误:

11 mai 2011 10:02:15 org.apache.catalina.core.StandardWrapperValve调用“Servlet.service()”倒拉Servlet测试一个généréune异常
java.lang.IllegalArgumentException:URI具有权限组件
在java.io.File.(File.java:385)

我不知道这意味着什么

我还尝试了
File dir=new File(“dir”)
File dir=新文件(“web/dir”)
甚至
File dir=新文件(新URI(http://localhost:8084/myapp/Dir

但是找不到Dir。我不明白,我快发疯了(嗯……对不起)

当我键入
http://localhost:8084/myapp/Dir
在我的web浏览器上,会显示目录的内容。因此,目录确实处于启用状态

我真的需要一些支援。
提前感谢。

假设您的Web应用程序部署为未打包的war,那么您可以在
ServletContext
对象上使用
getRealPath()
来获取给定Web应用程序路径的实际文件系统路径

因此,从servlet内部:

File dir = new File(getServletContext().getRealPath("/Dir"));


请注意,这不是一个好的做法,在运行之前不将WAR解包到文件系统的任何appserver(例如Google App Engine)上都不起作用。

Thanx供您快速回答。它很有效。看起来不错,我会处理它。有更好的解决方案吗?例如,对于Gooogle应用程序引擎。@lemoos:不适用于GAE,不,这是一个高度受限的环境。