如何在java中获取目录url的文件/目录列表?

假设我有一个URL: http://java.sun.com/j2se/1.5/pdf我想得到pdf目录下所有文件/目录的列表。我正在使用java 5.我可以得到列表这个程序的负责人http://www.httrack.com/ 。 但使用java我不知道是否可能。

有没有人知道如何在java中获取它或者这个程序如何完成java无法完成的工作?

有一些条件:

  1. 服务器必须已启用目录列表才能查看其内容。
  2. 我无法知道(没有API或HTTP动词)来检索列表,因此列表通常显示为普通的HTML页面
  3. 您必须解析此HTML页面才能找到条目。

可以使用像JSoup这样的lib轻松完成解析。

例如,使用JSoup,您可以在URL http://howto.unixdev.net/获取文档,如下所示:

 import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class Sample { public static void main(String[] args) throws IOException { Document doc = Jsoup.connect("http://howto.unixdev.net").get(); for (Element file : doc.select("td.right td a")) { System.out.println(file.attr("href")); } } } 

将输出:

 beignets.html beignets.pdf bsd-pam-ldap.html ddns-updates.html Debian_on_HP_dv6z.html dextop-slackware.html dirlist.html downloads/ ldif/ Linux-SharePoint.html rhfc3-apt.html rhfc3-apt.tar.bz2 SUNWdsee-Debian.html SUNWdtdte-b69.html SUNWdtdte-b69.tar.bz2 tcshrc.html Test_LVM_Trim_Ext4.html Tru64-CS20-HOWTO.html 

至于你的样本urlhttp://java.sun.com/j2se/1.5/pdf这是一个找不到的页面,所以我觉得你运气不好。

如果URL用于file:protocol,那么您可以将其转换为java.io.File ,然后使用这些方法列出目录。

如果URL是针对http:协议的,那么就没有文件目录的概念,并且从根本上说你不能做你想做的事情。 您将不得不退后一步,查看您尝试实现的更高级别要求。

让您的服务器部署Servlet以从其收到的请求指定的文件夹中检索文件列表。 在您的客户端,您的应用程序通过提供您打算列出的路径(虚拟?相对?)向服务器发送请求。 servlet将返回从服务器的OS检索到的请求路径中的文件列表。 然后,它将文件列表序列化到客户端端点以进行进一步处理。

如果您只能使用HTTP访问权限呈现页面:
使用HTML页面并解析它,给出目录列表以获取文件列表,并使用正则表达式来呈现文件名viz-a-viz。