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

问题描述:

假设我有一个URL: http://java.sun.com/j2se/1.5/pdf我想要获得pdf目录下所有文件/目录的列表。我正在使用java 5. 我可以通过此程序获得dir的列表http://www.httrack.com/。但用java我不知道是否有可能。如何在java中获取目录url的文件/目录列表?

是否有任何机构知道如何在java中获取它或者该程序如何执行java不能做的工作?

+5

你知道你会做出什么样的HTTP请求来获取它们呢?你知道目标HTTP服务器是否支持目录列表吗? – wrschneider 2012-07-19 13:13:03

+0

我有关于服务器和HTTP请求没有太多的信息,我有什么的唯一事情就是像上面提到的URL。 – itro 2012-07-20 08:41:11

有一些条件:

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

解析可以使用像JSoup这样的库很容易地完成。

例如,使用JSoup你可以获取在网址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 

至于你的样品网址http://java.sun.com/j2se/1.5/pdf这是不是发现了一个网页,所以我觉得你运气不好。

+0

我可以用此程序http://www.httrack.com/目录列表。 我认为一定有办法用java来做到这一点 – itro 2012-07-20 08:35:10

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

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

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

如果你能渲染HTTP访问才把页:
使用HTML网页并解析它让目录列表以获得使用正则表达式来渲染文件名的文件和即-A-即列表。