将文件从一台服务器复制到另一台服

我需要将文本文件从一个服务器复制到另一个服务器(两个服务器都是Linux)。 我如何用Java做到这一点?

如果你能够使用apache commons -io就容易了:FileUtils类有方便的方法来复制文件:

 FileUtils.copyFileToDirectory(srcFile, targetDirectory); 

(当你谈到我假设的文本文件时 ,你的应用程序可以访问这两个文件系统)

如果您需要从可访问的文件系统中复制文件,请使用Andreas的答案 。

如果您想要从下面的协议中抽象出一般的方法,请查看Apache Commons VFS 。 它为通过许多协议提供的资源提供了一个通用API:

  • FTP
  • 本地文件
  • HTTP和HTTPS
  • SFTP
  • 临时文件
  • Zip,Jar和Tar(未压缩,tgz或tbz2)
  • gzip和bzip2
  • 水库
  • 内存
  • 哑剧

如果你使用FTP,你可以使用Apache commons / net的FTPClient。

以下是一些示例代码供您参考:

 FTPClient client = new FTPClient(); client.connect(host); if(FTPReply.isPositiveCompletion(client.getReplyCode())) { if(client.login(username, password)) { FileInputStream fis = new FileInputStream(localFilepath); try { if(client.storeFile(remoteFilename, fis)) { System.out.println("File uploaded!"); } } finally { fis.close(); } } } 

几乎所有Linux机器都默认运行SSH服务器。 因此,SCP是您在他们之间复制文件的最佳选择。

使用像JSCH这样的SSH库来执行此操作。 您将在此处找到使用JSCH进行SCP传输的教程。

如果您想要一种简单的方法并且您的服务器支持PHP,我推荐使用Rapid Transfer Script 。

只需将脚本上载到要将文件复制到的目录,输入要复制的文件的URL,然后单击“ 传输” 。 它在2分钟内复制了一个1.4GB的文件,为我节省了大量的时间和带宽。

我使用commons net FTP将文件从一个服务器传输到另一个服务器。

Maven依赖:

   commons-net commons-net 3.3  

Java的:

 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; public void tranferFile() { FTPClient ftpClient = new FTPClient(); try { ftpClient.connect(servername, port); ftpClient.login(username, password); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); File sourceFile = new File("file which you want to send"); InputStream inputStream = new FileInputStream(sourceFile); boolean done = ftpClient.storeFile("filename which receiver get", inputStream); inputStream.close(); if (done) { LOGGER.info("file is uploaded successfully.............."); } } catch (IOException e) { LOGGER.error("Exception occured while ftp : "+e); } finally { try { if (ftpClient.isConnected()) { ftpClient.logout(); ftpClient.disconnect(); } } catch (IOException e) { LOGGER.error("Exception occured while ftp logout/disconnect : "+e); } } }