版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接。 https://blog.csdn.net/axing2015/article/details/84988239
- 最近工作使用到了ftp来实现文件上传和下载功能,所以在此做一些 java 开发代码总结,以方便以后使用查询。
- ftp服务器搭建配置请参考:https://blog.csdn.net/axing2015/article/details/83755143
- 下面直接上代码
package com.jin.demo.ftp;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import java.io.*;
/**
* FTPClient 上传下载示例
* @auther jinsx
* @date 2018-12-13 08:31
*/
public class UploadDownload {
private FTPClient ftp;
public static void main(String[] args) throws IOException {
UploadDownload ud = new UploadDownload();
ud.initFtp(); //初始化连接
ud.upload("/data/upload", new File("F://data//upload//testFile.txt")); //上传文件
ud.download("/data/download", "F://data//download"); //下载文件
ud.closeFtp(); //关闭连接
}
/**
* 初始化FTPClient
* @throws IOException
*/
public void initFtp() throws IOException {
ftp = new FTPClient();
ftp.setControlEncoding("UTF-8"); //设置编码
ftp.connect("192.168.0.100", 21); //连接
ftp.login("jin01", "123456"); //登录
ftp.setFileType(FTPClient.BINARY_FILE_TYPE); //设置传输文件形式
ftp.enterLocalPassiveMode(); //被动模式
//ftp.enterLocalActiveMode(); //主动模式(根据需要配置主动模式或被动模式)
System.out.println("登录状态:" + ftp.getReplyString());
}
/**
* 上传
* @param directory 上传到远程服务器的目录
* @param file 要上传的文件
*/
public void upload(String directory, File file) throws IOException {
ftp.makeDirectory(directory);
ftp.changeWorkingDirectory(directory); //工作目录切换到上传文件的目录下(要确定服务器上有此目录,否则需要先创建目录)
ftp.storeFile(file.getName(), new FileInputStream(file)); //上传
System.out.println("上传结果状态:" + ftp.getReplyString());
}
/**
* 下载
* @param directory 要下载远程服务器的目录
* @param localDirectory 要下载到本地服务器目录
*/
public void download(String directory, String localDirectory) throws IOException {
OutputStream out = null;
ftp.changeWorkingDirectory(directory); //工作目录切换到下载文件的目录下
FTPFile[] files = ftp.listFiles(); //获取所有文件
for (FTPFile ftpFile: files) { //遍历下载
String fileName = ftpFile.getName();
String LocalFile = localDirectory + File.separator + fileName;
out = new FileOutputStream(LocalFile);
ftp.retrieveFile(fileName, out); //下载
if(out != null){
out.flush();
out.close();
}
System.out.println("下载结果状态:" + ftp.getReplyString());
}
}
/**
* 登出、断开连接
* @throws IOException
*/
public void closeFtp() throws IOException {
if(ftp != null && ftp.isConnected()){
ftp.logout();
ftp.disconnect();
}
}
}