项目需求将上传的文件统一FTP传送到一个服务器
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.web.multipart.MultipartFile;
public class FtpUtils {
public static void main(String[] args) {
testUpload("172.31.0.130", "8888", "******", "\\txt\\", "F:\\log_network.txt","123.txt");
testDownload("172.31.0.130", "8888", "******", "\\txt\\", "F:\\宝宝.txt","123.txt");
testDeleteFile("172.31.0.130", "8888", "******", "\\pnng\\", "F:\\1233.png","AA.png");
}
/**
* fit 文件上传
* @param ip 服务器地址
* @param userName 用户名
* @param passWord 密 码
* @param pathName 文件路径
* @param filepath 源文件路径
* @param nameFile 新文件名称
*/
@SuppressWarnings("null")
public static void testUpload(String ip,int port, String userName, String passWord,String pathName, String filepath, String nameFile) {
FTPClient ftpClient = new FTPClient();
FileInputStream fis = null;
MultipartFile mpf = null;
System.out.println("上传文件....");
try {
ftpClient.connect(ip);
ftpClient.setDefaultPort(port);
ftpClient.login(userName, passWord);
InputStream inputStream = null;
File srcFile = new File(filepath);
// inputStream = mpf.getInputStream();
// fis = (FileInputStream) inputStream;
fis = new FileInputStream(srcFile);
inputStream = fis;
// 设置上传目录
if ("/".equals(File.separator)) {
pathName = pathName.replace("\\", "/");
}
// ftpClient.changeWorkingDirectory(pathName);
ftpClient.makeDirectory(pathName);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(pathName + File.separator + nameFile,inputStream);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP客户端出错!", e);
} finally {
IOUtils.closeQuietly(fis);
System.out.println("文件上传成功··");
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
/**
* @param ip
* @param userName
* @param passWord
* @param pathName
* @param filepath
* @param nameFile
*/
public static void testDownload(String ip,int port, String userName,String passWord, String pathName, String filepath, String nameFile) {
FTPClient ftpClient = new FTPClient();
FileOutputStream fos = null;
System.out.println("下载文件....");
try {
ftpClient.connect(ip);
ftpClient.setDefaultPort(port);
ftpClient.login(userName, passWord);
ftpClient.changeWorkingDirectory(pathName);//转移到FTP服务器目录
String remoteFileName = nameFile;
// ftpClient.mkd(pathName);
fos = new FileOutputStream(remoteFileName);
int reply;
//如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
}
FTPFile[] fs = ftpClient.listFiles();
for(FTPFile ff:fs){
if(ff.getName().equals(nameFile)){
File localFile = new File(filepath);
OutputStream is = new FileOutputStream(localFile);
ftpClient.retrieveFile(ff.getName(), is);
is.close();
}
}
ftpClient.logout();
// ftpClient.setBufferSize(1024);
// ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
// ftpClient.retrieveFile(remoteFileName, fos);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP客户端出错!", e);
} finally {
IOUtils.closeQuietly(fos);
System.out.println("文件下载成功····");
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
public static void testDeleteFile(String ip,int port, String userName, String passWord,String pathName, String filepath, String nameFile){
FTPClient ftpClient = new FTPClient();
System.out.println("删除文件.......");
try {
ftpClient.connect(ip);
ftpClient.login(userName, passWord);
ftpClient.changeWorkingDirectory(pathName);//转移到FTP服务器目录
ftpClient.deleteFile(nameFile);
ftpClient.logout();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("FTP客户端出错!", e);
} finally {
System.out.println("文件删除成功····");
try {
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("关闭FTP连接发生异常!", e);
}
}
}
public static void uploadFile(String url, int port, String username,
String password, String string, String string2,
ByteArrayInputStream byteArrayInputStream) {
}
}
各种百度。。。。基本搞定上传下载删除
缺点 中文文件名。。