1、需要引入外部jar包:commons-net-2.0.jar(或者是子包commons-net-ftp-2.0.jar)

2、需下载ftp服务器

3、 本地电脑访问ftp服务器格式:ftp://用户名:密码@ftp服务器ip

4、以下用api访问

STEP1:

Java代码
/**  
 * 连接并登录FTP   
 * @param hostname:ftp地址(不带ftp://)   即ip
 * @param username:登录用户名  
 * @param password:登录密码  
 **/  
public int openFtp(String hostname, String username, String password) {   
    int result = 0;   
       
    // 第一步:实例化FTPClient   
    ftpClient = new FTPClient();   
       
    try {   
        // 第二步:连接FTP   
        ftpClient.connect(hostname);   
           
        // 第三步:登录FTP   
        ftpClient.login(username, password);   
           
    } catch (SocketException e) {   
        // 连接错误时捕捉此异常   
        result = 1;   
    } catch (IOException e) {   
        e.printStackTrace();   
    }    
       
    return result;   
}

STEP2:

Java代码
/**  
 * 下载单个文件  
 *   
 * @param remoteFile  
 *            :需要下载的文件,格式为ftp://xx.xx.xx.xx/remoteFile,如:ftp://10.10.10.10/dir1  
 *            /dir2/file.txt,则remoteFile为dir1/dir2/file.txt  
 * @param localFile:下载的文件保存到本地的文件,为完整绝对路径。  
 * @return  
 */  
public int ftpDownload(String remoteFile, String localFile) {   
    FileOutputStream fos = null;   
    InputStream is = null;   
    try {   
        // 第一步:设置基本属性   
        ftpClient.setBufferSize(1024);   
        ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);   
           
        // 第二步:获取远程文件的输入流   
        is = ftpClient.retrieveFileStream(remoteFile);   
           
        if (is == null) {   
            // 如果输入流为空,则表示要下载的远程文件不存在   
            return 0;   
        } else {   
            // 如果输入流不为空,则将远程文件的输入流写到本地   
            fos = new FileOutputStream(localFile);   
            byte[] buffer = new byte[1024];   
            int i = -1;   
            while ((i = is.read(buffer)) != -1) {   
                fos.write(buffer, 0, i);   
            }   
        }   
  
    } catch (FileNotFoundException e) {   
        e.printStackTrace();   
    } catch (IOException e) {   
        e.printStackTrace();   
    } finally {   
        // 关闭输入输出流   
        IOUtils.closeQuietly(is);   
        IOUtils.closeQuietly(fos);   
    }   
  
    return 1;   
}

STEP3:

STEP4:

Java代码
/**  
 * 退出登录ftp,并断开连接  
 */  
public void closeFtp() {   
    try {   
        if (ftpClient != null) {   
            ftpClient.logout();   
            ftpClient.disconnect();   
        }   
    } catch (IOException e) {   
        // 断开连接错误时捕捉此异常   
    }   
}

原文来自:雨枫技术教程网 http://www.fengfly.com
原文网址:http://www.fengfly.com/plus/view-190551-1.html

FTP进行上传下载文件的更多相关文章

  1. linux下常用FTP命令 上传下载文件【转】

    1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...

  2. Linux 终端访问 FTP 及 上传下载 文件

    今天同事问我一个问题,在Linux 下访问FTP,并将文件上传上去. 我之前一直是用WinSCP工具的. 先将文件从linux copy到windows下,然后在传到ftp上.google 一下. 方 ...

  3. shell通过ftp实现上传/下载文件

    直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...

  4. Linux 终端訪问 FTP 及 上传下载 文件

    今天同事问我一个问题,在Linux 下訪问FTP,并将文件上传上去. 我之前一直是用WinSCP工具的. 先将文件从linux copy到windows下,然后在传到ftp上. google 一下. ...

  5. Linux 终端访问 FTP 及 上传下载 文件[转]

    1.      Linux 终端连接FTP [oracle@Dave ~]$ ftp 10.85.7.97 Connected to 10.85.7.97. 220 Serv-U FTP Server ...

  6. 使用批处理文件在FTP服务器 上传下载文件

    1.从ftp服务器根目录文件夹下的文件到指定的文件夹下 格式:ftp -s:[配置文件] [ftp地址] 如:ftp -s:c:\vc\ftpconfig.txt   192.168.1.1 建立一个 ...

  7. Spring学习---Spring中利用组件实现从FTP服务器上传/下载文件

    FtpUtil.java import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcepti ...

  8. HCNA管理设置文件系统FTP服务上传下载文件

    1.拓扑图 2.R2配置 The device is running! ###################################### <Huawei>sys Enter s ...

  9. 使用ftp软件上传下载php文件时换行丢失bug

    正 文:   在使用ftp软件上传下载php源文件时,我们偶尔会发现在本地windows下notepad++编辑器写好的php文件,在使用ftp上传到linux服务器后,php文件的换行符全部丢失了, ...

随机推荐

  1. CSS样式总结

    CSS: Cascading Style Sheet,层叠样式表 Css由三部分组成:选择符.样式属性.值: 基本语法:选择符 {样式属性:值:样式属性:值.....} 一,选择器 常用的选择器有:标 ...

  2. mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in

    从字面的意思上说:这个函数要被弃用,请使用 mysqlli 或者是 PDO 代替 然后就查手册发现没说,大家一定要查官方最新的手册

  3. Android开发重修

    Android程序开发的重新学习 #####Mars课程学习笔记20140926 1.Service主要用于完成耗时较长的操作,没有图形化界面. 2.Content Provider数据的提供者,是A ...

  4. Codeforces Round #281 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/493 A题 写完后就交了,然后WA了,又读了一遍题,没找出错误后就开始搞B题了,后来回头重做的时候才发现,球员被红牌罚下场后还可 ...

  5. DSASync: Managing End-to-End Connections in Dynamic Spectrum Access Wireless LANs

    其实跟上一篇是同一篇文章.不过上一篇是发表在IEEE Secon2010了,这篇是后来又增加了部分内容后的一版,收录在IEEE/ACM TRANSACTIONS ON NETWORKING, VOL. ...

  6. linux网址

    1. 上海爱墨电子科技有限公司 http://www.shaimo.cn/showproduct.asp?piccat_id=196&pic_id=780 2. http://lxr.free ...

  7. mysql 中 LIMIT的简单用法

    mysql--语法: SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset --举例: select * from table l ...

  8. 关于部分应用无法向POJ提交代码的解决方案

    有个一年没做过题了,最近有骚年反映他们的VirtualJudge无法做POJ的题目,一直都是JudgeError状态. 于是登录到那个VJudge试了试,代码的确一直无法提交成功,他们的服务器发回50 ...

  9. eq,neq,gt,lt等表达式缩写

    eq 等于neq 不等于gt 大于egt 大于等于lt 小于elt 小于等于like LIKEbetween BETWEENnotnull IS NUT NULLnull IS NULL

  10. 学习php常用算法

    <?php /*学用php算法*/ /*1.冒泡法 *思路分析:在要排序的一组数中,对当前还未排好的序列, *从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒. *即,每 ...