日期:2014-05-17 浏览次数:20812 次
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.util.ArrayList; import java.util.StringTokenizer; import sun.net.TelnetInputStream; import sun.net.ftp.FtpClient; /** * 对ftp进行上传、下载文件夹操作 * */ public class Ftp { // ftp服务器的IP地址 private String ip = "127.0.0.1"; // 用户名 private String username = "test"; // 密码 private String password = "test"; // 需要上传的目录,带绝对路径 private String localfilefullname = ""; FtpClient ftpclient = null; OutputStream os = null; FileInputStream is = null; /** * 取得参数值 * * @param serverIP 上传IP * @param username 用户名 * @param password 密码 */ public Ftp(String serverIP,String username, String password) { //IP this.ip = serverIP; //用户名 this.username = username; //密码 this.password = password; } /** * 检查文件夹是否存在 * * @param dir * @param ftpclient * @return */ private boolean isdirexist(String dir, FtpClient ftpclient)throws Exception { try { ftpclient.cd(dir); } catch (Exception e) { return false; } return true; } /** * ftp上传 * * @param prefix 创建的文件夹名 * @param localfilefullname 上传的源文件夹 * @return */ public boolean upload(String prefix,String localfilefullname)throws Exception { this.localfilefullname = localfilefullname; try { String savefilename = localfilefullname; // 新建一个ftp客户端连 ftpclient = new FtpClient(); ftpclient.openServer(this.ip); ftpclient.login(this.username, this.password); // 打开本地待上传的文件 File file_in = new File(savefilename); processfile(prefix,file_in, ftpclient); if (is != null) { is.close(); } if (os != null) { os.close(); } if (ftpclient != null) { ftpclient.closeServer(); } return true; } catch (Exception e) { e.printStackTrace(); System.err.println("exception e in ftp upload(): " + e.toString()); return false; } finally { if (is != null) { is.close(); } if (os != null) { os.close(); } if (ftpclient != null) { ftpclient.closeServer(); } } } /** * 用递归算法来上传文件 * * @param prefix 创建的文件夹名 * @param source 路径 * @param ftpclient * @throws exception */ private void processfile(String prefix,File source, FtpClient ftpclient)throws Exception { if (source.exists()) { if (source.isDirectory()) { //对文件路径进行转义 String path = prefix + source.getPath().substring(localfilefullname.length()).replace("\\", "/"); if (!isdirexist(path, ftpclient)) { //创建文件夹 createdir(path, ftpclient); } File sourcefile[