package com.wq.test;
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPReply;
public class upftp {
private FTPClient ftp;
/**
*
* @param path 上传到ftp服务器哪个路径下
* @param addr 地址
* @param port 端口号
* @param username 用户名
* @param password 密码
* @return
* @throws Exception
*/
private boolean connect(String path,String addr,int port,String username,String password) throws Exception {
boolean result = false;
ftp = new FTPClient();
int reply;
ftp.connect(addr,port);
ftp.login(username,password);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
return result;
}
ftp.changeWorkingDirectory(path);
result = true;
return result;
}
/**
*
* @param file 上传的文件或文件夹
* @throws Exception
*/
private void upload(File file) throws Exception{
if(file.isDirectory()){
ftp.makeDirectory(file.getName());
ftp.changeWorkingDirectory(file.getName());
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
File file1 = new File(file.getPath()+"\\"+files[i] );
if(file1.isDirectory()){
upload(file1);
ftp.changeToParentDirectory();
}else{
File file2 = new File(file.getPath()+"\\"+files[i]);
System.out.println(files[i]);
System.out.println(file2.getName());
FileInputStream input = new FileInputStream(file2);
String name;
name=new String(file2.getName().getBytes("GBK"),"iso-8859-1");// 转换后的目录名或文件名。
ftp.storeFile(name, input);
input.close();
}
}
}else{
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
}
public static void main(String[] args) throws Exception{
upftp t = new upftp();
System.out.println(1111111);
String name="公司文档/献血服务发展部/WeChat/Realse/V2.1.0.0";
name=new String(name.getBytes("GBK"),"iso-8859-1");// 转换后的目录名或文件名。
System.out.println(name);
t.connect(name, "172.0.0.34", 21, "yourname", "passwd");
File file = new File(args[0]);
t.upload(file);
}
}
关键代码解析
上传文件部分
String name;
name=new String(file2.getName().getBytes("GBK"),"iso-8859-1");// 转换后的目录名或文件名。
ftp.storeFile(name, input);
将所有文件转码
上传路径部分
String name="公司文档//Realse/V2.1.0.0";
name=new String(name.getBytes("GBK"),"iso-8859-1");// 转换后的目录名或文件名。
将所有路径转码