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

发布于 2024-11-06 13:12:34 字数 1062 浏览 0 评论 0原文

我创建了一个小应用程序,可以浏览我的文件系统以将其创建并显示为树(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 异常 java.lang.IllegalArgumentException:URI 具有权限组件 在 java.io.File.(File.java:385)

我不知道这是什么意思。

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

但没有找到 Dir 。我不明白,我要疯了(嗯……抱歉)。

当我在网络浏览器上输入 http://localhost:8084/myapp/Dir 时,会显示 Dir 的内容。所以 Dir 确实位于 http://localhost:8084/myapp/

我真的需要一些备份。 提前致谢 。

I've created a little app that browse my file system to create and display it as a tree (JTree) . Now I want to do the same for my files present on my server .
I have an Apache Tomcat server .
What I want to do is something like :

File dir = new File(new URI("file://localhost:8084/myapp/Dir"));

  File[] files = dir.listFiles();

    for (File f : files) {
        System.out.println(f.getAbsolutePath());

this is a just an exemple but I want to use java File API .

I am getting this error when I put this code in a 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)

I dont know what does this means.

I've also tried File dir = new File("Dir") ; and File dir = new File("web/Dir") and even File dir = new File(new URI(http://localhost:8084/myapp/Dir));

but Dir is not found . I dont get it and I am going mad (hum..sorry) .

when I type http://localhost:8084/myapp/Dir on my web browser the content of Dir is displayed .So Dir is really on http://localhost:8084/myapp/

I really really need some backup here .
Thanks in advance .

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寂寞陪衬 2024-11-13 13:12:34

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

因此,从 servlet 内部:

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

请参阅 javadoc

请注意,这不是一个好的做法,并且不会在任何在运行之前不将其 WAR 解压到文件系统上的应用程序服务器上工作(例如 Google App Engine)。

Assuming that your webapp is deployed as an unpacked war, then you can use getRealPath() on the ServletContext object to obtain the real filesystem path for a given webapp path.

So from inside your servlet:

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

See javadoc.

Note that this isn't good practice, and will not work on any appserver which doesn't unpack its WARs onto the filesystem before running it (e.g. Google App Engine).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文