2013-02-28 85 views

回答

1

通过标准API类java.net.URL支持HTTP和至少有限的FTP支持您只能访问特定的FTP功能,如设置传输模式,但在大多数情况下我吨工作。

如果添加的Apache下议院IO,可以使用IOUtils类直接从HTTP服务器复制到FTP服务器:

InputStream in = new URL("http://host/path").openStream(); 
OutputStream out = 
    new URL("ftp://user:[email protected]/path").openConnection().getOutputStream(); 

IOUtils.copy(in, out); 

in.close(); 
out.close();   

如果你不想上添加共享IO的依赖,您只需要编写几行没有第三方库的支持数据复制:

byte[] buffer = new byte[16384]; 
int r = 0; 
while ((r=in.read(buffer))>=0) { 
    out.write(buffer, 0, r); 
} 
+0

很好,谢谢=)那是我需要的=) – 2013-02-28 16:58:04

0

我不相信这是一般可以指示Web服务器,直接将文件上传到FTP服务器,但它绝对有可能写一个程序来下载文件然后将其上传到FTP服务器

+0

所以我们需要额外的步骤,以在计算机上本地存储它从URL下载之后,再上传呢?认为它也可以直接从URL上传文件 – 2013-02-28 16:09:12

+0

如果你在控制FTP/Web服务器,你可以很容易地在其上设置软件,以便你可以远程指示它从给定的Web服务器*拉* ,但不能指示任意Web服务器上传到任意FTP服务器。 – aardvarkk 2013-02-28 16:10:21

+0

我不想指示Web服务器。应该可以使用apache commons(io?)和net直接从url下载文件到ftp ...我只能访问ftp服务器,并且希望使用java编写小型控制台应用程序来传输直接下载文件,无需在本地下载并上传 – 2013-02-28 16:13:10