注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淡泊明智

 
 
 

日志

 
 

java实现FTP传输文件( 2008-05-23 15:45:09| 分类: java 技术)  

2012-04-18 10:54:37|  分类: java基础知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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.FTP;

import org.apache.commons.net.ftp.FTPClient;

import org.apache.commons.net.ftp.FTPFile;

import org.apache.commons.net.ftp.FTPReply;

/**

 * @author xuyang 导入commons-net-1.4.1.jar、jakarta-oro-2.0.8.jar这两个包

 * 文件、文件夹的名称有中文,先转换字符集

 * 如:new String(fileName.getBytes("gb2312"),"iso8859-1");

 */

public class FtpUtil {

 private FTPClient ftp;

 /**

  * 连接FTP服务器

  *

  * @param serverIP

  * @param user

  * @param password

  * @return boolean

  */

 public boolean connectFtpServer(String serverIP, String user,

   String password) {

  ftp = new FTPClient();

  int reply;

  try {

   ftp.connect(serverIP);

   reply = ftp.getReplyCode();

   if (!FTPReply.isPositiveCompletion(reply)) {

    ftp.disconnect();

    return false;

   }

   if (!ftp.login(user, password)) {

    disconnect();

    return false;

   }

  } catch (IOException e) {

   disconnect();

   return false;

  }

  return true;

 }

 /**

  * 创建文件夹

  *

  * @param path

  * @return boolean

  */

 public boolean createDirectory(String path) {

  try {

   String[] dirArray = path.split("/");

   for (int i = 0; i < dirArray.length; i++) {

    if (dirArray[i] != null)

     if (!ftp.changeWorkingDirectory(dirArray[i])) {

      ftp.makeDirectory(dirArray[i]);

      ftp.changeWorkingDirectory(dirArray[i]);

     }

   }

  } catch (IOException e) {

   disconnect();

   return false;

  }

  return true;

 }

 /**

  * 下载文件

  *

  * @param local

  * @param remote

  * @return boolean

  */

 public boolean downloadFile(String local, String remote) {

  OutputStream output = null;

  try {

   ftp.setFileType(FTP.BINARY_FILE_TYPE);

   ftp.enterLocalPassiveMode();

   String[] dirArray = remote.split("/");

   if (dirArray.length > 1) {

    for (int i = 0; i < dirArray.length - 1; i++) {

     if (dirArray[i] != null) {

      ftp.changeWorkingDirectory(dirArray[i]);

     }

    }

   }

   File file = new File(local);

   output = new FileOutputStream(file);

   ftp.retrieveFile(dirArray[dirArray.length - 1], output);

   output.close();

  } catch (IOException e) {

   disconnect();

   return false;

  }

  return true;

 }

 /**

  * 上传文件

  *

  * @param local

  * @param remote

  * @return boolean

  */

 public boolean uploadFile(String local, String remote) {

  InputStream input = null;

  try {

   ftp.setFileType(FTP.BINARY_FILE_TYPE);

   ftp.enterLocalPassiveMode();

   String[] dirArray = remote.split("/");

   if (dirArray.length > 1) {

    for (int i = 0; i < dirArray.length - 1; i++) {

     if (dirArray[i] != null) {

      ftp.changeWorkingDirectory(dirArray[i]);

     }

    }

   }

   input = new FileInputStream(local);

   ftp.storeFile(dirArray[dirArray.length - 1], input);

   input.close();

  } catch (IOException e) {

   disconnect();

   return false;

  }

  return true;

 }

 /**

  * 删除文件

  *

  * @param filePath

  * @return boolean

  */

 public boolean deleteFile(String filePath) {

  try {

   String[] dirArray = filePath.split("/");

   if (dirArray.length > 1) {

    for (int i = 0; i < dirArray.length - 1; i++) {

     if (dirArray[i] != null) {

      ftp.changeWorkingDirectory(dirArray[i]);

     }

    }

   }

   ftp.deleteFile(dirArray[dirArray.length - 1]);

  } catch (IOException e) {

   disconnect();

   return false;

  }

  return true;

 }

 /**

  * 删除文件夹

  *

  * @param path

  * @return boolean

  */

 public boolean removeDirectory(String path) {

  try {

   String[] dirArray = path.split("/");

   for (int i = 0; i < dirArray.length; i++) {

    if (dirArray[i] != null) {

     ftp.changeWorkingDirectory(dirArray[i]);

    }

   }

   FTPFile[] files = ftp.listFiles();

   for (int j = 0; j < files.length; j++) {

    if (files[j].isDirectory()) { // 递归删除子文件夹

     removeDirectory(files[j].getName());

    }

    ftp.deleteFile(files[j].getName());

   }

   ftp.changeToParentDirectory();

   ftp.removeDirectory(dirArray[dirArray.length - 1]);

  } catch (IOException e) {

   disconnect();

   return false;

  }

  return true;

 }

 /**

  * 重命名文件、文件夹

  *

  * @param from

  * @param to

  * @return boolean

  */

 public boolean rename(String from, String to) {

  try {

   String[] dirArray = from.split("/");

   if (dirArray.length > 1) {

    for (int i = 0; i < dirArray.length - 1; i++) {

     if (dirArray[i] != null) {

      ftp.changeWorkingDirectory(dirArray[i]);

     }

    }

   }

   ftp.rename(dirArray[dirArray.length - 1], to);

  } catch (IOException e) {

   disconnect();

   return false;

  }

  return true;

 }

 /**

  * 断开连接

  */

 public void disconnect() {

  if (ftp.isConnected()) {

   try {

    ftp.logout();

    ftp.disconnect();

   } catch (IOException e) {

    e.printStackTrace();

   }

  }

 }

}

  评论这张
 
阅读(114)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018