Как получить список файлов/каталогов URL-адреса каталога в java?

Скажем, у меня есть URL: http://java.sun.com/j2se/1.5/pdf Я хочу получить список всех файлов/каталогов в каталоге pdf. Я использую java 5. Я могу получить список dir с этой программой http://www.httrack.com/. но с java я не знаю, возможно ли это.

Кто-нибудь знает, как получить его в java или как эта программа выполняет задание, которое java не может выполнить?

Ответы

Ответ 1

Существуют следующие условия:

  • На сервере должен быть включен список каталогов, чтобы вы могли видеть его содержимое.
  • Я не знаю (API или HTTP-глагол), чтобы получить список, поэтому список обычно отображается как обычная HTML-страница.
  • Вам нужно будет проанализировать эту HTML-страницу, чтобы найти записи.

Разбор можно легко выполнить с помощью lib, например 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, это страница не найдена, поэтому я думаю, вам не повезло.

Ответ 2

Если URL-адрес для файла: protocol, вы можете преобразовать его в java.io.File, а затем использовать эти методы для отображения каталога.

Если URL-адрес для http: protocol, то нет никакой концепции каталогов файлов, и вы принципиально не можете делать то, что, как вы думаете, хотите сделать. Вам нужно будет отступить и посмотреть на требования более высокого уровня, которые вы пытаетесь выполнить.

Попросите сервер развернуть сервлет, чтобы получить список файлов из папки, указанной в запросе, который он получает. В конечной точке вашего клиента ваше приложение отправляет запрос на сервер путем указания пути (виртуального? Родственника?), Который вы намереваетесь перечислить. servlet вернет список файлов в запрошенном пути, извлеченный из ОС сервера. Затем он упорядочивает список файлов в конечной точке клиента для дальнейшей обработки.

Если вы можете отобразить страницу с доступом HTTP только тогда:
Используйте HTML-страницу и проанализируйте ее, указав список каталогов, чтобы получить список файлов и viz-a-viz, используя регулярное выражение для визуализации имен файлов.