ftp下载文件例子-01

1 篇文章 0 订阅

使用ftp下载单个文件例子。


1.安装ftp服务

2.导入相应的jar

commons-net-1.4.1.jar

3.编码

如下是本人写的一个例子:


package org.ftp.test;


import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

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

/**
 * FTP
 * @author gong
 *
 */
public class FtpUtil {


    /**
     * 获取FTP连接
     *
     * @param ip
     *            ip地址
     * @param account
     *            账户
     * @param password
     *            密码
     * @return ftp连接
     */
    public static FTPClient login(String ip, String account, String password) {
        FTPClient ftp = null;
        try {
            ftp = new FTPClient();
            ftp.setDefaultTimeout(10000);
            ftp.connect(ip, 21);
            boolean status = ftp.login(account, password);
            System.out.println("login:"+status);
            if (status == false) {
                throw new Exception("login status false");
            }
            ftp.enterLocalPassiveMode();
            ftp.setBufferSize(1024);
            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
        } catch (Exception ex1) {
            closeFTP(ftp);
            return null;
        }
        return ftp;
    }

    /**
     * 关闭FTP
     *
     * @param ftp
     *            ftp连接
     */
    public static void closeFTP(FTPClient ftp) {
        try {
            if (ftp != null) {
                ftp.logout();
                ftp.disconnect();
                ftp = null;
            }
        } catch (Exception ex3) {
            ex3.printStackTrace();
        }
    }
    /**
     * 下载
     * @param ftp
     * @param remote
     * @param local
     * @return
     */
    public static boolean download(FTPClient ftp ,String remote, String local) {
        System.out.println("remote:"+remote);
        System.out.println("local:"+local);
        ftp.enterLocalPassiveMode();
        boolean result = false;
        try {
            File f = new File(local);
            System.out.println("f.exists():"+f.exists());
            if (f.exists()) {
                //输入文件信息
                //此处false用意在意把当前f对象的缓存清空,这样f.length()就为0
                //OutputStream out = new FileOutputStream(f, false);
                BufferedOutputStream  out = new BufferedOutputStream(new FileOutputStream(f));  
                System.out.println("f.length():"+f.length());
                //
                ftp.setRestartOffset(f.length());
                result = ftp.retrieveFile(remote, out);
                out.close();
            } else {
                OutputStream out = new FileOutputStream(f);
                result = ftp.retrieveFile(remote, out);
                out.close();
            }

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
    
        } catch (IOException e) {
            // TODO Auto-generated catch block

        }
        return result;
    }
    /**
     * 测试方法
     * @param args
     */
    public static void main(String[] args){
        try {
            //ip:10.251.186.20
            //ftp:用户名(ethan)和密码(ethan)
            FTPClient ftp = FtpUtil.login("10.251.186.20", "ethan", "ethan");
            System.out.println("ft:"+ftp);
            //下载test1.log文件,信息将写到到F:/software/Ser-U-data/test2.log中
            //如果不指定写文件名称,则bool值将会返回false,则不成功,必须指定要写入的文件名称
            boolean bool=FtpUtil.download(ftp, "F:/software/Ser-U-data/test1.log", "F:/software/Ser-U-data2/test2.log");
            System.out.println("bool:"+bool);
            FtpUtil.closeFTP(ftp);
        } catch (Exception e) {
            
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值