设为首页 收藏本站
查看: 2587|回复: 0

[经验分享] 向ftp服务端上传文件和文件夹-20151201

[复制链接]

尚未签到

发表于 2016-6-9 13:07:58 | 显示全部楼层 |阅读模式
import java.io.File;  
import java.io.FileInputStream;  
import java.util.Map;

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

import com.sitech.ismp.coll.busi.e2e.rule.AnalysisRule;

/**
* @author smj
* */
    public class upToFtp extends AnalysisRule {

public upToFtp(Map<String, String> params) {
super(params);
// TODO Auto-generated constructor stub
}

private  FTPClient ftp;   
        /**
         * Description: 向FTP服务器上传文件夹
         * @param path 上传到ftp服务器哪个路径下   
         * @param url  FTP服务器地址
         * @param port 端口号
         * @param username 用户名
         * @param password 密码
         * @author smj
         * @throws Exception
         */   
        private  boolean connect(String path,String url,int port,String username,String password) throws Exception {   
            boolean result = false;   
            ftp = new FTPClient();   
            int reply;   
            ftp.connect(url,port);   
            ftp.login(username,password);   
            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);   
            reply = ftp.getReplyCode();   
            if (!FTPReply.isPositiveCompletion(reply)) {   
                ftp.disconnect();   
                return result;   
            }   
            boolean flag4=ftp.changeWorkingDirectory(path);  
            logger.info("切换工作目录:"+flag4+"所要切换的路径:"+path);
            result = true;   
            return result;   
        }   
        /**
         *  
         * @param file 上传的文件或文件夹
         * @throws Exception
         */
        private boolean upload(File file) throws Exception{   
            if(file.isDirectory()){         
                //ftp.makeDirectory(file.getName());              
                ftp.changeWorkingDirectory(file.getPath());   
                String[] files = file.list();  
                logger.info("文件列表有:"+files.toString() );
                for (int i = 0; i < files.length; i++) {   
                    File file1 = new File(files);  
                    logger.info("我端的文件名:"+file1.getName() + "\t"  );
                    if(file1.isDirectory()){   
                        upload(file1);   
                        ftp.changeToParentDirectory();   
                    }else{                  
                        File file2 = new File(files);
                        logger.info("文件名:"+file2.getName() + "\t"  );
                        FileInputStream input = new FileInputStream(file1);   
                        boolean flag3= ftp.storeFile(file2.getName(), input);
                        logger.info("文件传输状态"+flag3);
                        input.close();                          
                    }               
                }   
            }else{   
                File file2 = new File(file.getPath());   
                FileInputStream input = new FileInputStream(file2);   
                ftp.storeFile(file2.getName(), input);   
                input.close();      
            }
return true;   
        }
        
        /**
         * 移动指定文件或文件夹(包括所有文件和子文件夹)
         *  
         * @param fromDir
         *            要移动的文件或文件夹
         * @param toDir
         *            目标文件夹
         * @throws Exception
         */   
        public void MoveFolderAndFileWithSelf(String from, String to) throws Exception {  
            try {  
                File dir = new File(from);  
               
                to +=  File.separator + dir.getName();  
                File moveDir = new File(to);  
                if(dir.isDirectory()){  
                    if (!moveDir.exists()) {  
                        moveDir.mkdirs();  
                    }  
                }else{  
                    File tofile = new File(to);  
                    dir.renameTo(tofile);  
                    return;  
                }  
                  
                //System.out.println("dir.isDirectory()"+dir.isDirectory());  
                //System.out.println("dir.isFile():"+dir.isFile());  
                  
             // 文件一览   
                File[] files = dir.listFiles();  
                if (files == null)  
                    return;  
      
                // 文件移动  
                for (int i = 0; i < files.length; i++) {  
                    System.out.println("文件名:"+files.getName());  
                    if (files.isDirectory()) {  
                        MoveFolderAndFileWithSelf(files.getPath(), to);  
                     // 成功,删除原文件  
                        files.delete();  
                    }  
                    File moveFile = new File(moveDir.getPath() + File.separator + files.getName());  
                 // 目标文件夹下存在的话,删除  
                    if (moveFile.exists()) {  
                        moveFile.delete();  
                    }  
                    files.renameTo(moveFile);  
                }  
                //dir.delete();  
            } catch (Exception e) {  
                throw e;  
            }  
        }  
        
        protected void excute()  {
        logger.info("upToFtp start........");
      try {
  boolean flag1=connect("/ibnmsftp", "10.145.206.133", 21, "ibnmsftp", "ibnmsftp#2012");
  logger.info("连接对端ftp状态为::"+flag1 + "\t"  );
          File file = new File("/iBNMSConsole/ismp/CRM_DATA/");  
          logger.info("文件路径为:"+file.getPath() + "文件名字为:" +file.getName()+ "\t"  );
          boolean flag= upload(file);
          logger.info("文件上传状态为:"+flag + "\t"  );
          if(flag==true){
          MoveFolderAndFileWithSelf("/iBNMSConsole/ismp/CRM_DATA/","/iBNMSConsole/ismp/CRM_HIS/");
           }
          logger.info("upToFtp end........");
      } catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  logger.info("上传文件出错");
  
  }
      }  
    }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228288-1-1.html 上篇帖子: java 中应用FTP的一些知识点及注意 下篇帖子: java 实现ftp的文件上传和删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表