2

サーバーからローカルシステムにフォルダーをコピーしようとしていますが、サーバーからファイルをコピーするコードをどのように記述したかわかりませんが、完全なフォルダーをコピーするのに混乱しています。ファイルをコピーするには、次のコードを使用しています。

  BufferedInputStream in = null;
    FileOutputStream fout = null;
    try
    {
        in = new BufferedInputStream(new URL(urlString).openStream());
        fout = new FileOutputStream(filename);

        byte data[] = new byte[1024];
        int count;
        while ((count = in.read(data, 0, 1024)) != -1)
        {
            fout.write(data, 0, count);
        }
    }
    finally
    {
        if (in != null)
            in.close();
        if (fout != null)
            fout.close();
    }

そしてその正常に動作しています。

4

3 に答える 3

2

HTTP はフォルダを認識しません。特に、「フォルダ」内にあるファイルのすべての URL を一覧表示する方法はありません。したがって、基本的に、あなたがやろうとしていることは不可能です。

于 2013-03-28T09:14:03.143 に答える
1

リモート フォルダーがファイル システムにマウントされている場合は、Apache Commons IO のFileUtilsを使用することをお勧めします。

一方、リモート サーバーに HTTP インターフェイスしかない場合は、ディレクトリ リストが許可されていない限り (これは通常ではありません)、ダウンロードするファイルの URL を知る必要があります。HttpUnitが役立つ場合があります。

于 2013-03-28T09:19:10.470 に答える
0

簡単なトリックで、http でこれを可能にすることができます。まず、ブラウザでフォルダの URL を開いたときに、どのように表示されるかを確認します。一般的には、次のようになります。

--back
--file1.mp3
--file2.doc
--その他のファイル
--その他のフォルダー

ここに表示されている場合、すべてがハイパーリンクで表されています。これらのハイパーリンクを解析する必要があり、提供された各ハイパーリンクからファイルをダウンロードできます。ハイパーリンクが別のフォルダー (サブフォルダー) を表している場合は、上記と同じ手順を実行する必要があります。

データを適切に解析できれば、フォルダ全体をダウンロードするのは非常に簡単です。

于 2013-03-28T09:29:09.533 に答える