欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java ftp客戶端,javaftp,apachecommon

来源: javaer 分享于  点击 1994 次 点评:130

java ftp客戶端,javaftp,apachecommon


apachecommons-net可以很方便的实现,但是这个第三方包中对文件夹的删除与创建(级联)操作并不是特别的方便。删除文件夹必须保证该文件夹下没有任何文件,创建文件夹也必须要求父文件夹存在。为了方便以后使用方便,对其进行了简单的封装,主要针对删除与文件夹创建。代码如下:```java package cn.androiddevelop.io;

import java.io.FileInputStream;  import java.io.FileOutputStream;  import java.io.IOException;  import java.net.SocketException;import org.apache.commons.net.ftp.FTP;  import org.apache.commons.net.ftp.FTPClient;  import org.apache.commons.net.ftp.FTPFile;/**  * ftp客户端  *   * @author Yuedong Li  *   */  public class FtpClient {      private FTPClient client;    public FtpClient(String host, String userName, String password)              throws SocketException, IOException {          initFtpClient(host, 21, userName, password);      }    public FtpClient(String host, int port, String userName, String password)              throws SocketException, IOException {          initFtpClient(host, port, userName, password);      }    /**      * 登录      *       * @param host      * @param port      * @param userName      * @param password      * @throws SocketException      * @throws IOException      */      public void initFtpClient(String host, int port, String userName,              String password) throws SocketException, IOException {          client = new FTPClient();          client.connect(host, port);          client.login(userName, password);      }    /**      * 得到所有目录      *       * @param remotePath      * @return      * @throws IOException      */      public FTPFile[] listFiles(String remotePath) throws IOException {          if (client == null)              return null;          client.changeWorkingDirectory(remotePath);          return client.listFiles();      }    /**      * 上传      *       * @param localPath      *            本地路径      * @param remotePath      *            ftp路径      * @return 上传是否成功      * @throws IOException      */      public boolean upload(String localPath, String remotePath)              throws IOException {          if (client == null)              return false;          boolean res = false;          FileInputStream fileInputStream = new FileInputStream(localPath);          int index = remotePath.lastIndexOf('/');          if (index != -1) {              client.setFileType(FTP.BINARY_FILE_TYPE);              client.changeWorkingDirectory(remotePath.substring(0, index));              res = client.storeFile(remotePath.substring(index + 1),                      fileInputStream);          }          fileInputStream.close();          return res;      }    /**      * 下载      *       * @param remotePath      *            ftp路径      * @param localPath      *            本地路径      * @return 下载是否成功      * @throws IOException      */      public boolean download(String remotePath, String localPath)              throws IOException {          if (client == null)              return false;          boolean res = false;          FileOutputStream fileOutputStream = new FileOutputStream(localPath);          res = client.retrieveFile(remotePath, fileOutputStream);          fileOutputStream.flush();          fileOutputStream.close();          return res;    }    /**      * 删除文件      *       * @param remotePath ftp端路径      * @return      * @throws IOException      */      public boolean delete(String remotePath) throws IOException {          if (client == null)              return false;        return client.deleteFile(remotePath) || deleteDirectory(remotePath);      }    /**      * 创建目录      *       * @param remotePath      * @throws IOException      */      public boolean makeDirectory(String remotePath) throws IOException {          if (client == null)              return false;        String[] item = remotePath.split("/");          String currentPath = "";          for (int i = 0; i < item.length - 1; i++) {              currentPath = currentPath + "/" + item[i];              client.makeDirectory(currentPath);          }        return client.makeDirectory(remotePath);      }    /**      * 删除文件      *       * @param remotePath ftp端路径      * @return      * @throws IOException      */      private boolean deleteDirectory(String remotePath) throws IOException {          FTPFile[] files = listFiles(remotePath);          for (int i = 0; i < files.length; i++) {              if (files[i].isDirectory()) {                  deleteDirectory(remotePath + "/" + files[i].getName());              } else {                  client.deleteFile(remotePath + "/" + files[i].getName());              }          }          return client.removeDirectory(remotePath);      }    /**      * 重命名      *       * @param remoteOldPath       * @param remoteNewPath      * @return      * @throws IOException      */      public boolean rename(String remoteOldPath, String remoteNewPath)              throws IOException {          if (client == null)              return false;          return client.rename(remoteOldPath, remoteNewPath);      }    /**      * 退出登录      *       * @throws IOException      */      public void close() throws IOException {          if (client != null)              client.logout();      }  }

```

相关栏目:

用户点评