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

时间:2010-09-28 12:30:24

标签: java

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

6 个答案:

答案 0 :(得分:5)

如果您需要从可访问的文件系统复制文件,请使用Andreas' answer

如果您想要从下面的协议中抽象出一般的方法,请查看Apache Commons VFS。它通过a number of protocols提供了可用资源的公共API:

  • FTP
  • 本地文件
  • HTTP和HTTPS
  • SFTP
  • 临时文件
  • Zip,Jar和Tar(未压缩,tgz或tbz2)
  • gzip和bzip2
  • RES
  • RAM

答案 1 :(得分:4)

如果您能够使用apache commons-io,则很容易:FileUtils类有方便的方法来复制文件:

FileUtils.copyFileToDirectory(srcFile, targetDirectory);

(正如您所说的文字文件我认为,您的应用程序可以访问这两个文件系统)

答案 2 :(得分:1)

如果你使用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();
    }  
  }
}

答案 3 :(得分:0)

默认情况下,几乎所有Linux机器都将运行SSH服务器。所以SCP是你在他们之间复制文件的最佳选择。

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

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

Maven依赖:

    <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>3.3</version>
    </dependency>

爪哇:

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);
            }
        }

    }