[英]Copy file from one server to another
我需要将文本文件从一个服务器复制到另一个服务器(两个服务器都是Linux)。 我如何用Java做到这一点?
如果您需要从可访问的文件系统中复制文件,请使用Andreas的答案 。
如果您想要从下面的协议中抽象出一般的方法,请查看Apache Commons VFS 。 它为通过许多协议提供的资源提供了一个通用API:
Easist如果你能使用Apache的百科全书-IO :该FileUtils
类有方便的方法来复制文件:
FileUtils.copyFileToDirectory(srcFile, targetDirectory);
(当你谈到我假设的文本文件时 ,你的应用程序可以访问这两个文件系统)
如果你使用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();
}
}
}
如果您想要一种简单的方法并且您的服务器支持PHP,我推荐使用Rapid Transfer Script 。
只需将脚本上载到要将文件复制到的目录,输入要复制的文件的URL,然后单击“ 传输” 。 它在2分钟内复制了一个1.4GB的文件,为我节省了大量的时间和带宽。
几乎所有Linux机器都默认运行SSH服务器。 因此,SCP是您在他们之间复制文件的最佳选择。
使用像JSCH这样的SSH库来执行此操作。 您将在此处找到使用JSCH进行SCP传输的教程。
我使用commons net FTP将文件从一台服务器传输到另一台服务器。
Maven依赖:
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.3</version>
</dependency>
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);
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.