获取Web中目录的文件

时间:2012-11-29 14:48:08

标签: java url directory

我有一个主页,其中有一个下载目录。 我想从其目录中自动读取该主页的所有文件。

例如,我有主页:www.homepage.org和子目录resources/downloads以及我想要显示的下载文件。

我有一个运行Spring和JSP的Java服务器,并尝试了以下操作,但根本不起作用:

    String path = request.getContextPath();
    path += DOWNLOADS;
    URL url = null;
    String server = request.getServerName();
    try {
        url = new URL("https", server, request.getLocalPort(), path);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    if (url != null) {
        String externalForm = url.toExternalForm();
        File directory = new File(externalForm);
        String[] files = directory.list();
        for (String file : files) {
            ;
        }
    }

4 个答案:

答案 0 :(得分:1)

您可以使用Servlet。如果资源目录位于Web应用程序的根目录中,请使用

PrintWriter writer = response.getWriter();
String path = getServletContext().getRealPath("/resources/downloads");
File directory = new File(path);
if(directory.isDirectory()){
   String[] files = directory.list();
   for (String file : files) {
        writer.write(file + "<br/>");
   }
} else writer.write(directory.getAbsolutePath() + "could not be found");

答案 1 :(得分:0)

我找到了使用FTP管理器的解决方案...... 您可以查看代码here

我希望它可以帮助您解决问题。

答案 2 :(得分:0)

HTTP协议没有提供列出“目录”中“文件”的方法。实际上,从协议规范的角度来看,没有目录这样的东西。

  • 如果您尝试访问的网络服务器支持WebDAV,您可以使用PROPFIND查找集合(即目录)的结构。

  • 或者,如果网络服务器启用了目录列表(并且没有index.html或其他),那么您可以屏幕清除HTML列表。

  • 否则,没有真正的解决方案......使用HTTP / HTTPS。


在重新阅读问题和答案时,我发现尝试检索目录列表的servlet和承载目录的servlet实际上可以在同一台机器上运行。在这种情况下,您可以选择通过文件系统访问信息。但这将需要“客户端”servlet知道“服务器”servlet如何表示事物。 URL不会(也不能)为您提供该信息。

rickz提供的答案是一种可能的方法,但只有当客户端和服务器servlet实际上是同一个servlet时它才有效。

答案 3 :(得分:0)

您需要使用目录路径而不是网址列出目录。一旦你检索到文件,你必须创建自己的html,把它放到你的网上,如果那就是你想要的。

有一个很好的例子,可以使用JQuery here

创建目录列表和浏览

下载部分的软件包中包含一个JSP连接器,如果您不想使用JQuery树,可能需要稍微调整一下。

祝你好运!