单位网站建设与管理,wordpress ie兼容,大型网站建站公司,网站广告尺寸背景#xff1a;需要把服务器A中的文件拷贝至服务器B中#xff0c;要求使用FTP进行传输#xff0c;当文件传输未完成时文件是tmp格式的#xff0c;传输完毕后显示为原格式#xff08;此处是grib2#xff09;。 
package org.example;import org.apache.commons.io.FileUt…背景需要把服务器A中的文件拷贝至服务器B中要求使用FTP进行传输当文件传输未完成时文件是tmp格式的传输完毕后显示为原格式此处是grib2。 
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(rootDirfileName);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);}}
}