17

URLがあるとしましょう:http://java.sun.com/j2se/1.5/pdfディレクトリの下にあるすべてのファイル/ディレクトリのリストを取得したいと思いますpdf

私はJava5を使用しています。

このプログラムhttp://www.httrack.com/でdirのリストを取得できますが、Javaではそれが可能かどうかわかりません。

Javaでそれを取得する方法を知っている人はいますか?または、Javaができない場合、このプログラムはどのようにその仕事をすることができますか?

4

2 に答える 2

23

いくつかの条件があります:

  1. ディレクトリの内容を表示するには、サーバーでディレクトリ リストが有効になっている必要があります。
  2. リストを取得する方法 (API や HTTP 動詞がないこと) を知る方法がないため、通常、リストは通常​​の HTML ページとして表示されます。
  3. エントリを見つけるには、この HTML ページを解析する必要があります。

解析は、 JSoupのような lib を使用して簡単に実行できます。

たとえば、JSoup を使用すると、次のhttp://howto.unixdev.net/ように URL でドキュメントを取得できます。

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は、これは見つからないページなので、運が悪いと思います。

于 2012-07-19T13:18:49.793 に答える
7

URLが file: プロトコル用である場合は、それを に変換しjava.io.File、それらのメソッドを使用してディレクトリを一覧表示できます。

URLが http: プロトコルの場合は、ファイルのディレクトリという概念がなく、基本的にやりたいことを実行できません。一歩下がって、満たそうとしているより高いレベルの要件を確認する必要があります。

サーバーにサーブレットをデプロイして、受信したリクエストで指定されたフォルダーからファイルのリストを取得します。クライアント エンドポイントで、リストするパス (仮想? 相対?) を提供することで、アプリケーションがサーバーに要求を送信します。servletは、サーバーの OS から取得した、要求されたパスにあるファイルのリストを返します。次に、さらに処理するために、ファイル リストをクライアント エンドポイントにシリアル化します。

HTTP アクセスのみでページをレンダリングできる場合:
HTML ページを使用して解析し、ディレクトリ リストを取得してファイルのリストを取得し、正規表現を使用して viz-a-viz を使用してファイル名をレンダリングします。

于 2012-07-19T13:18:37.317 に答える