zoukankan      html  css  js  c++  java
  • FTP下载文件

    今天公司有需求,需要从远程FTP服务器上下载文件到本地代码。然后看了一下,顺便做个记录

    什么是FTP呢?  详细百度百科

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)。"下载"文件就是从远程主机拷贝文件至自己的计算机上;"上传"文件就是将文件从自己的计算机中拷贝至远程主机上。用Internet语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。
     
    ftp有图形化工具,我用的是FileZilla,
    下载后直接安装,然后打开:输入地址和密码,用户名连接就行,端口号不用输。
    下面是用代码来完成下载:
    package org.spring.springboot.controller;


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

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.SocketException;

    public class ContinueFTP
    {
    /**
    * Description: 从FTP服务器下载文件
    * @Version1.0
    * @param url FTP服务器hostname
    * @param port FTP服务器端口
    * @param username FTP登录账号
    * @param password FTP登录密码
    * @param remotePath FTP服务器上的相对路径
    * @param fileName 要下载的文件名
    * @param localPath 下载后保存到本地的路径
    * @return
    */
    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;
    }
    ftp.changeWorkingDirectory(remotePath);//转移到FTP服务器目录
    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);
    is.close();
    }
    }

    ftp.logout();
    success = true;
    } catch (IOException e) {
    e.printStackTrace();
    } finally {
    if (ftp.isConnected()) {
    try {
    ftp.disconnect();
    } catch (IOException ioe) {
    }
    }
    }
    return success;
    }

    public void testDownFile(){
    try {
    boolean flag = downFile("3333333", 21, "22222", "4111111111", "taodp/20171201/DLCL20161123102305",
    "20161102181637805058421.jpg", "Desktop/Contents/Home/ftp");
    System.out.println(flag);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
     
     
    严于律己,宽恕待人。
  • 相关阅读:
    海康威视复赛题
    [转] A*寻路算法C++简单实现
    [转]程序进行性能分析工具gprof使用入门
    [转]KMP 算法
    boolalpha的用法和作用
    python与数据科学有多少“暧昧情事”?14个Q&A告诉你
    Python来袭,教你用Neo4j构建“复联4”人物关系图谱!
    深入理解BERT Transformer ,不仅仅是注意力机制
    Python开发者年度调研,结果出乎意料!
    R和Python,对抗or融合?
  • 原文地址:https://www.cnblogs.com/panshujun/p/8010702.html
Copyright © 2011-2022 走看看