博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java ftp下载文件
阅读量:4972 次
发布时间:2019-06-12

本文共 5165 字,大约阅读时间需要 17 分钟。

1、使用官方正规的jar

commons-net-1.4.1.jar

jakarta-oro-2.0.8.jar

注意:使用ftp从windows服务器下载文件和从linux服务器下载文件不一样

2、用ftp从linux服务器下载文件

System.out.println(new Date()+"  开始进入ftpDownload定时器");                //ftp服务器登录凭证        String host=PropertiesManager.getProperty("ftpHost");        int port=Integer.parseInt(PropertiesManager.getProperty("ftpPort"));        String user=PropertiesManager.getProperty("ftpUser");        String password=PropertiesManager.getProperty("ftpPassword");                //获取时间字段信息        SimpleDateFormat sdf1=new SimpleDateFormat("yyyyMMdd");        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");        Date date=new Date();        String today1 = sdf1.format(date);        String today = sdf.format(date);                        String txtFileDir="/";        String txtSaveDir="E:/dataCenter/shengzhan/";                //检查本地磁盘目录是否存在txt文件        boolean flag = isTxtExit(today1,txtSaveDir);        System.out.println(new Date()+"  判断txt文件是否存在:"+flag);        FlagUtil.ftpDownloadRunning=true;                //讲txt的下载操作和解析操作分成2个独立的操作进行,排除互相间的干扰        if(flag==false)//文件不存在进行ftp下载操作        {            FTPClient ftp=null;                        try            {                //ftp的数据下载                ftp=new FTPClient();                ftp.connect(host, port);                   ftp.login(user, password);                ftp.setFileType(FTPClient.BINARY_FILE_TYPE);                                //设置linux环境                FTPClientConfig conf = new FTPClientConfig( FTPClientConfig.SYST_UNIX);                ftp.configure(conf);                                //判断是否连接成功                int reply = ftp.getReplyCode();                if (!FTPReply.isPositiveCompletion(reply))                {                    ftp.disconnect();                    System.out.println("FTP server refused connection.");                    return;                }                                //设置访问被动模式                ftp.setRemoteVerificationEnabled(false);                ftp.enterLocalPassiveMode();                                                //检索ftp目录下所有的文件,利用时间字符串进行过滤                boolean dir = ftp.changeWorkingDirectory(txtFileDir);                if (dir)                 {                     FTPFile[]fs = ftp.listFiles();                     for(FTPFile f:fs)                    {                           if(f.getName().indexOf(today1+"2000")>0)                          {                                System.out.println(new Date()+"  ftpDownload定时器下载txt成功");                                      File localFile = new File(txtSaveDir+f.getName());                                  OutputStream ios = new FileOutputStream(localFile);                                   ftp.retrieveFile(f.getName(), ios);                                ios.close();                                 break;                           }                        }                }            }             catch (Exception e)            {                e.printStackTrace();                System.out.println(new Date()+"  ftp下载txt文件发生错误");            }            finally            {                if(ftp != null)  try {ftp.disconnect();} catch (IOException ioe) {}              }

3、使用ftp从windows服务器下载文件

public static boolean downFile(              String url, //FTP服务器hostname              int port,//FTP服务器端口              String username, //FTP登录账号              String password, //FTP登录密码              String remotePath,//FTP服务器上的相对路径               String fileName,//要下载的文件名              String localPath//下载后保存到本地的路径             ) {            boolean success = false;            FTPClient ftp = new FTPClient();            try {                int reply;                ftp.connect(url, port);                //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器                 ftp.login(username, password);//登录                 reply = ftp.getReplyCode();                if (!FTPReply.isPositiveCompletion(reply)) {                    ftp.disconnect();                    return success;                }               System.out.println("aaa");            ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录                 FTPFile[] fs = ftp.listFiles();                          for(FTPFile ff:fs){              System.out.println("bb" + fs);                             if(ff.getName().equals(fileName)){                   System.out.println("dd");                    File localFile = new File(localPath+"/"+ff.getName());                        OutputStream is = new FileOutputStream(localFile);                         ftp.retrieveFile(ff.getName(), is);                      System.out.println("ccc" +ff.getName()+fileName);                    is.close();                    }                }                ftp.logout();                success = true;            } catch (IOException e) {                e.printStackTrace();            } finally {                if (ftp.isConnected()) {                    try {                        ftp.disconnect();                    } catch (IOException ioe) {                    }                }            }            return success;        }

 

转载于:https://www.cnblogs.com/tiandi/p/5936218.html

你可能感兴趣的文章
SpReMa-文件存储格式
查看>>
ConcurrentHashMap内存溢出问题
查看>>
Android Layout XML属性研究--android:layout_marginBottom (转载)
查看>>
Digester解析xml文件
查看>>
java之双缓冲的代码粘贴
查看>>
C++学习笔记40:进程应用
查看>>
一个Windows Mobile, Windows Embedded CE工程师的找工经历(一)
查看>>
springcloud 入门 3 (服务之间的调用)
查看>>
router-link传递参数
查看>>
重写equals方法的约定
查看>>
随机迷宫算
查看>>
JSON
查看>>
2016.8.23 项目总结
查看>>
RBAC
查看>>
王爽-汇编语言-综合研究五-函数接收不定量参数
查看>>
[HAOI2015][bzoj 4033]树上染色(树dp+复杂度分析)
查看>>
C++ Boost在VS2015中的使用
查看>>
leetcode 12 -> Integer to Roman
查看>>
Ubuntu 14.04 安装Docker
查看>>
如果已经建立了连接,但是客户端突然出现故障了怎么办?
查看>>