如何获取目录URL的文件/目录列表?

问题描述 投票:16回答:2

假设我有一个URL:http://java.sun.com/j2se/1.5/pdf我想获得pdf目录下的所有文件/目录的列表。

我正在使用Java 5。

我可以使用此程序http://www.httrack.com/获取目录列表,但使用Java我不知道是否可以。

有人知道如何用Java来获得它吗?或者,如果Java无法执行,该程序将如何完成这项工作?

java url
2个回答
22
投票

有一些条件:

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

使用JSoup之类的库可以轻松完成解析。

例如,使用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

至于您的示例URL http://java.sun.com/j2se/1.5/pdf,这是一个找不到的页面,所以我认为您不走运。


5
投票

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

如果URL用于http:协议,则没有文件目录的概念,并且从根本上说,您无法做您想做的事情。您将不得不退后一步,查看您要满足的更高级别的要求。

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

如果您只能通过HTTP访问呈现页面,则:使用HTML页面并对其进行解析,从而给出目录列表以获取文件列表,并使用正则表达式呈现文件名,即viz-a-viz。

© www.soinside.com 2019 - 2024. All rights reserved.