Java 在云提供商之间移动文件

Java 在云提供商之间移动文件,java,file,cloud,inputstream,move,Java,File,Cloud,Inputstream,Move,我想通过使用他们的JavaAPI将一个文件从一个云提供商移动到另一个云提供商 在源云提供商上,我可以获取一个文件作为输入流,或者将其下载到一个文件对象(使用文件输出流)。目标云提供商接受一个文件作为输入流(需要内容长度)或文件对象存储 通过移动文件是否更好 在云存储提供商上获取文件的输入流和内容长度,并使用这些数据存储在目标云提供商或 首先将源云提供程序上的文件下载到文件对象,然后再将其存储到目标云提供程序上 优点/缺点是什么 第一种移动策略的优点是它需要更少的磁盘空间。但是它们有性能差异吗

我想通过使用他们的JavaAPI将一个文件从一个云提供商移动到另一个云提供商

在源云提供商上,我可以获取一个文件作为输入流,或者将其下载到一个文件对象(使用文件输出流)。目标云提供商接受一个文件作为输入流(需要内容长度)或文件对象存储

通过移动文件是否更好

  • 在云存储提供商上获取文件的输入流和内容长度,并使用这些数据存储在目标云提供商或
  • 首先将源云提供程序上的文件下载到文件对象,然后再将其存储到目标云提供程序上
优点/缺点是什么


第一种移动策略的优点是它需要更少的磁盘空间。但是它们有性能差异吗?

通过使用流复制方法将文件内容保留在内存中,可能会稍微提高性能,因为您没有发生磁盘绑定的I/O等待。这就是说,从云存储API到/到云存储API的流量的网络时间可能会成为您的主要瓶颈,因此不太可能产生重大影响


将文件写入磁盘的一个可能优势是,您可以获得所有内容的自动额外备份,并且在上载失败时可以更简单地执行重试。

除非您知道要传输的文件适合内存,否则我不会使用文件对象。使用流媒体。在将文件发送到目标提供商之前,您仍然可以将其存储在本地。

我已投票结束此问题。如果不深入了解这两家云提供商的运营方式,我真的不知道如何回答这个问题。充其量,我们只会得到SO用户的主观意见,而没有任何支持事实。