Windows操作系统,通过IIS搭建FTP服务。
java实现FTP服务所需要的jar包:
commons-net-3.3.jar
代码示例:
package com.ftp;
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.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
public class ClientFTP {
private final static String FtpHost = "127.0.0.1";// 主机ip
private final static int FtpPort = 21;// 端口号
private final static String FtpUserName = "admin";// ftp用户名
private final static String FtpPassWord = "123456";// ftp密码
private final static String FtpPath = "D:\ftp";// ftp中的目录
/**
* 上传
*/
public static void uploadFile(FTPClient ftpClient,File file) {
try {
InputStream inputStream = new FileInputStream(file);
ftpClient.setControlEncoding("UTF-8");
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.makeDirectory(FtpPath);//若目录不存在,则创建
ftpClient.changeWorkingDirectory(FtpPath);//切换到FTP目录
ftpClient.storeFile(file.getName(), inputStream);
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 下载
*/
public static void downloadFile(FTPClient ftpClient,String downloadFileName,String localPath){
try{
ftpClient.changeWorkingDirectory(FtpPath);
FTPFile[] ftpFiles = ftpClient.listFiles();
for(FTPFile file : ftpFiles){
if(file.getName().equalsIgnoreCase(downloadFileName)){
File localFile = new File(localPath+"\\"+downloadFileName);
OutputStream outputStream = new FileOutputStream(localFile);
ftpClient.retrieveFile(downloadFileName, outputStream);
outputStream.close();
}
}
}catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
FTPClient ftpClient = new FTPClient();
try{
ftpClient.connect(FtpHost, FtpPort);//连接
ftpClient.login(FtpUserName, FtpPassWord);//登陆
// 验证FTP服务器是否登录成功
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("登陆失败!");
}
/**
* 上传
*/
uploadFile(ftpClient,new File("C:\\Users\\admin\\Desktop\\533820713366173117.jpg"));
// FTP目录-文件列表
ftpClient.changeWorkingDirectory(FtpPath);
FTPFile[] ftpFiles = ftpClient.listFiles();
for (FTPFile file : ftpFiles) {
System.out.println(file.getName());
}
/**
* 下载
*/
downloadFile(ftpClient,"533820713366173117.jpg","D:\\");
/**
* 删除
*/
// FTP目录
ftpClient.changeWorkingDirectory(FtpPath);
FTPFile[] ftpFiles_ = ftpClient.listFiles();
for (FTPFile file : ftpFiles_) {
if(file.getName().equals("533820713366173117.jpg")){
ftpClient.deleteFile(file.getName());
}
}
//删除后
FTPFile[] ftpFiless = ftpClient.listFiles();
for (FTPFile file : ftpFiless) {
System.out.println(file.getName());
}
ftpClient.logout();//退出
}catch (Exception e) {
e.printStackTrace();
}finally{
if(ftpClient.isConnected()){
try {
ftpClient.disconnect();//断开连接
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}