如何使用Java将文件从一个远程位置传输到另一个位置?

时间:2018-11-24 14:07:07

标签: java ftp file-transfer remote-server webdav

我想编写Java程序以将文件直接下载到远程服务器,而不是在本地计算机上下载。

远程服务器是FTP / WebDAV

那么在Java中是否有任何库可以将文件直接下载到远程ftp / WebDAV服务器,而不是将其保存到本地计算机并上载。

请引导正确的方向

1 个答案:

答案 0 :(得分:2)

您的问题过于笼统,但我建议您执行以下步骤:

1)使用Java NIO

将文件下载到系统中

2)获取下载的文件,然后使用Ftp Client将其发送到您可以访问的Web服务器,如下所示:

FTPClient client = new FTPClient();
try {
client.connect("ftp.domain.com");
client.login("username", "pass");
FileInputStream fileInputStream = new FileInputStream("path_of_the_downloaded_file");
client.storeFile(filename, fileInputStream );
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
    if (fileInputStream != null) {
        fileInputStream .close();
    }
    client.disconnect();
} catch (IOException e) {
    e.printStackTrace();
}
}

============================编辑================= ================

回复评论:“但我不想在本地存储文件,甚至不是临时存储”

然后,您只需要将其存储在字节数组中,然后将字节数组转换为InputStream并将其发送到服务器即可

    FTPClient client = new FTPClient();
    BufferedInputStream in = new BufferedInputStream(new URL("www.example.com/file.pdf").openStream());
    byte[] bytes = IOUtils.toByteArray(in);
    InputStream stream = new ByteArrayInputStream(bytes);
    client.connect("ftp.domain.com");
    client.login("username", "pass");
    client.storeFile("fileName", stream);
    stream.close();