下面是我自己的一个简单demo:(需要引入commons-net 的jar包)
public class FtpTest {
private FTPClient ftp;
//获取字符编码
private static String encoding = System.getProperty("file.encoding");
/**
*
* @param path 上传到ftp服务器哪个路径下
* @param addr 地址
* @param port 端口号
* @param username 用户名
* @param password 密码
* @param filePath 本地文件路径
* @return
* @throws Exception
*/
private void upload(String path,String addr,int port,String username,String password,String filePath) throws Exception {
ftp = new FTPClient();
int reply;
// 连接FTP服务器
ftp.connect(addr,port);
// 登录
ftp.login(username,password);
// 检验是否连接成功
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
System.out.println("连接失败");
}
// 转移工作目录至指定目录下
ftp.changeWorkingDirectory(path);
//设置为二进制
ftp.setFileType(FTP.BINARY_FILE_TYPE);
File file = new File(filePath);
//若不是文件夹
if(!file.isDirectory()){
FileInputStream input = new FileInputStream(file);
//上传,ftp必须是iso-8859-1编码
boolean flag = ftp.storeFile(new String(file.getName().getBytes(encoding),"iso-8859-1"), input);
//System.out.println(flag);
file.delete();
input.close();
}else{
//System.out.println("文件夹");
String [] files = file.list();
for(int i = 0;i<files.length;i++){
File tpFile = new File(file.getAbsolutePath()+File.separator+files[i]);
FileInputStream input = new FileInputStream(tpFile);
boolean flag = ftp.storeFile(new String(tpFile.getName().getBytes(encoding),"iso-8859-1"), input);
System.out.println(flag);
input.close();
}
ftp.logout();
}
if(ftp.isConnected()){
ftp.disconnect();
}
}
public static void main(String[] args) throws Exception{
FtpTest t = new FtpTest();
t.upload("", "192.168.191.1", 2121, "young", "young","E:/文件");
}
}