基于 apache 的 commons-net-3.3.jar 的 ftp java代码上传下载文件

来源:互联网 发布:飞行器路径规划算法 编辑:程序博客网 时间:2024/05/18 01:00
package com.genomics.ib.item.control;import java.io.File;    import java.io.FileInputStream;    import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import org.apache.commons.net.ftp.FTPClient;    import org.apache.commons.net.ftp.FTPFile;import org.apache.commons.net.ftp.FTPReply;        /** * @author  * package com.genomics.ib.item.control * @title ItemFtp * @Description :  FTP 上传下载工具类 * @time 2013-11-27  */public class ItemFtp {                 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;          }                      /**     * @author      * @class  ItemFtp     * @title  upload     * @Description :      * @time 2013 2013-11-27     * @return void     * @exception :(Error note)     * @param file 上传的文件或文件夹     * @param path 上传的文件的路径      * @throws Exception     */    private void upload(File file , String path) throws Exception{           System.out.println( " file.isDirectory() : " + file.isDirectory()  );            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 , path );                          ftp.changeToParentDirectory();                      }else{                                        File file2 = new File(file.getPath()+"\\"+files[i]);                          FileInputStream input = new FileInputStream(file2);                          ftp.storeFile(file2.getName(), input);                          input.close();                                            }                             }              }else{                  File file2 = new File(file.getPath());                            System.out.println( " file.getPath() : " + file.getPath()  + " | file2.getName() : " + file2.getName() );                        InputStream input = new FileInputStream(file2);                            ftp.changeWorkingDirectory(path);               ftp.storeFile(file2.getName(), input);                              input.close();  //关闭输入流            ftp.logout();  //退出连接        }          }                       /**     * @author      * @class  ItemFtp     * @title  download     * @Description : FPT 下载文件方法     * @time 2013 2013-11-27     * @return void     * @exception :(Error note)     * @param reomvepath 下载的文件的路径      * @param fileName  下载的文件名      * @param localPath 下载的文件本地路径     * @throws Exception     */    @SuppressWarnings("unused")private void download(String reomvepath , String fileName , String localPath  ) throws Exception{                            ftp.changeWorkingDirectory(reomvepath);                       // 列出该目录下所有文件            FTPFile[] fs = ftp.listFiles();            // 遍历所有文件,找到指定的文件            for (FTPFile ff : fs) {             if (ff.getName().equals(fileName)) {              // 根据绝对路径初始化文件              File localFile = new File(localPath + "/" + ff.getName());              // 输出流              OutputStream is = new FileOutputStream(localFile);              // 下载文件              ftp.retrieveFile(ff.getName(), is);              System.out.println("下载成功!");              is.close();               }            }                        ftp.logout();  //退出连接                }        public static void main(String[] args) throws Exception{            ItemFtp t = new ItemFtp();             boolean lianjie = t.connect("D:\\", "127.0.0.1", 21, "jiang", "jiang");      System.out.println( "连接 :" + lianjie  );    //上传//      File file = new File("d:\\test.txt");  //      t.upload(file , "E:\\ftptest\\mulu");              //下载      t.download("E:\\ftptest\\mulu", "test.txt", "D:\\db");       }    } 
借助jar包 apache 的 commons-net-3.3.jar
原创粉丝点击