2013-02-28 78 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