背景:需要把服务器A中的文件拷贝至服务器B中,要求使用FTP进行传输,当文件传输未完成时文件是tmp格式的,传输完毕后显示为原格式(此处是grib2)。文章来源地址https://www.toymoban.com/news/detail-609530.html
package org.example;
import org.apache.commons.io.FileUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.example.FtpBean.FtpBean;
import org.example.FtpUtil.FtpUtil;
import java.io.*;
import java.nio.charset.StandardCharsets;
public class FtpSimple {
public static void main(String[] args) throws IOException {
// 连接服务器
FTPClient ftpClient = null;
FTPClient ftpClient2 = null;
String rootDir = "/文件目录/";
try {
ftpClient = new FTPClient();
ftpClient.connect("IP地址");
ftpClient.enterLocalActiveMode();
ftpClient.login("用户名","密码");
System.out.println("A建立连接!");
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 设置二进制传输
ftpClient.changeWorkingDirectory(rootDir);// 进入目标文件所在目录
ftpClient2 = new FTPClient();
ftpClient2.connect("IP地址");
ftpClient2.enterLocalActiveMode();
ftpClient2.login("用户名","密码");
System.out.println("B建立连接!");
ftpClient2.setFileType(FTPClient.BINARY_FILE_TYPE); // 设置二进制传输
ftpClient2.changeWorkingDirectory("/文件目录/");
System.out.println("切换至目录成功!开始遍历...");
FTPFile[] files = ftpClient.listFiles();
System.out.println("文件数目(包括2个系统文件):"+files.length);
Integer flag_temp = 0;
// 遍历文件,获得文件流
for(FTPFile file: files) {
String fileName = file.getName();
if(fileName.endsWith("grib2")) // 确定格式,以免读取到系统文件
{
InputStream inputStream = ftpClient.retrieveFileStream(rootDir+fileName);
try{
ftpClient2.storeFile(fileName+".tmp",inputStream);
flag_temp += 1; // 传输成功的文件数量
}catch(Exception e) {
System.out.println(e);
}
inputStream.close();
ftpClient2.rename(fileName+".tmp", fileName);
ftpClient.completePendingCommand(); // 必须加,不然只有第一个文件可以传输成功。
if(flag_temp == files.length - 2)
{
System.out.println("传输完毕!");
}
}
}
// 关闭ftp连接
ftpClient.disconnect();
ftpClient2.disconnect();
}catch (Exception e){
StringBuffer sb = new StringBuffer("异常:"+e.toString());
System.out.println(sb);
}
}
}
文章来源:https://www.toymoban.com/news/detail-609530.html
到了这里,关于Java 两台服务器间使用FTP进行文件传输的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!