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 回答