2012-07-19 12 views
15

Powiedzmy, że mam URL: http://java.sun.com/j2se/1.5/pdf Chcę uzyskać listę wszystkich plików/katalogów w katalogu pdf. Używam java 5. Mogę uzyskać listę dir z tym programem http://www.httrack.com/. ale z java nie wiem, czy to jest możliwe.Jak uzyskać listę plików/katalogów adresu URL katalogu w języku Java?

Czy każdy organ wie, jak uzyskać go w java lub w jaki sposób ten program wykonuje zadanie, którego java nie może?

+5

Czy wiesz, jakie rodzaje żądań HTTP można uzyskać, aby je uzyskać? Czy wiesz, czy docelowy serwer HTTP obsługuje nawet listing katalogu? – wrschneider

+0

Nie mam zbyt wiele informacji na temat serwera i żądania HTTP, jedyne co mam to adres URL, jak wspomniano powyżej. – itro

Odpowiedz

19

Istnieją pewne warunki:

  1. serwer musi mieć włączoną wymieniając w celu, aby zobaczyć zawartość tego katalogu.
  2. Nie ma sposobu, w jaki znam (bez API lub czasownika HTTP), aby pobrać listing, dlatego lista jest zwykle wyświetlana jako zwykła strona HTML.
  3. Będziesz musiał przeanalizować tę stronę HTML, aby znaleźć wpisy.

Parsowanie można wykonać w prosty sposób przy użyciu biblioteki podobnej do JSoup.

Na przykład, używając JSoup można pobrać dokumenty pod adresem URL http://howto.unixdev.net/ tak:

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")); 
     } 
    } 
} 

wyświetli:

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 

Jak dla próbki url http://java.sun.com/j2se/1.5/pdf jest to strona nie znaleziono, więc myślę, że nie masz szczęścia.

+0

Mogę uzyskać listę dir z tego programu http://www.httrack.com/. Myślę, że musi być sposób, aby to zrobić z java też – itro

4

Jeśli Adres URL dotyczy protokołu file: protocol, można go przekonwertować na java.io.File, a następnie użyć tych metod do wyświetlenia katalogu.

Jeśli adres IP URL dotyczy protokołu http :, wówczas nie ma koncepcji katalogów plików i zasadniczo nie można zrobić tego, co chcesz zrobić. Będziesz musiał cofnąć się i spojrzeć na wymagania wyższego poziomu, które próbujesz spełnić.

Niech serwer wdroży serwlet, aby pobrać listę plików z folderu określonego przez otrzymane żądanie. W punkcie końcowym klienta aplikacja wysyła żądanie do serwera, podając ścieżkę (wirtualny? Względny?), Którą zamierzasz wyświetlić. servlet zwróci listę plików w żądanej ścieżce, pobranych z systemu operacyjnego serwera. Następnie serializuje listę plików do punktu końcowego klienta w celu dalszego przetwarzania.

Jeśli można renderować strony z dostępem HTTP tylko wówczas:
Użyj strony HTML i przetwarza go dając aukcji, aby uzyskać listę plików i Viz-a-mianowicie z wykorzystaniem wyrażeń regularnych, aby uczynić nazwy plików katalogu.

Powiązane problemy