FTP上传下载工具类

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

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

/**
 * Ftp上传下载文件
 * 
 * @author sww
 * @version C01 2014年8月14日
 * @since PhonePlus
 */
public class FTPUtil
{
    private final Logger logger = Logger.getLogger(FTPUtil.class);
    
    /**
     * FTP服务地址
     */
    private  String address;

    /**
     * FTP端口号
     */
    private int port;

    /**
     * FTP登录用户名
     */
    private String username;

    /**
     * FTP登录密码
     */
    private String password;

    /**
     * 构造函数 
     */
    public FTPUtil(String address, int port, String username, String password)
    {
        this.address = address;
        this.port = port;
        this.username = username;
        this.password = password;
    }
    
    /**
     * 
     * 获取FTP连接
     * 
     * @author sww
     * @return
     */
    private FTPClient getClient()
    {
        FTPClient ftp = new FTPClient();
        try
        {
            ftp.connect(address, port);
            // 登录
            ftp.login(username, password);
            ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
        }
        catch (SocketException e)
        {
            e.printStackTrace();
            logger.error("Login Fail FTP :" + address, e);
        }
        catch (IOException e)
        {
            e.printStackTrace();
            logger.error("Login FTP Fail ! IOException", e);
        }
        return ftp;
    }

    /**
     * 
     * Ftp服务器文件移动
     * @author sww
     * @param from
     * @param to
     * @param fileExtension
     * @return
     */
    public boolean moveFile(String from, String to, String fileExtension)
    {
        logger.info("FTP moveFile from :" + from + " to:" + to);
        boolean success = false;
        FTPClient ftp = getClient();
        try
        {
            int reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply))
            {
                ftp.disconnect();
                logger.error("Ftp not response :" + reply);
                return success;
            }
            ftp.changeWorkingDirectory(from);// 转移到FTP服务器目录
            FTPFile[] fs = ftp.listFiles();
            for (FTPFile ff : fs)
            {
                if (ff.getName().endsWith(fileExtension))
                {
                    ftp.makeDirectory(to);
                    ftp.rename(from + File.separator + ff.getName(), to + File.separator + ff.getName());
                }
            }

            ftp.logout();
            success = true;
        }
        catch (IOException e)
        {
            e.printStackTrace();
            logger.error("Ftp moveFile Exception !", e);
        }
        finally
        {
            if (ftp.isConnected())
            {
                try
                {
                    ftp.disconnect();
                }
                catch (IOException ioe)
                {
                    logger.error("Ftp moveFile disconnect ftp Exception !", ioe);
                }
            }
        }
        return success;
    }

    /**
     * Description: 向FTP服务器上传文件
     * 
     * @param formLocal
     *            本地文件目录
     * @param toRemote
     *            FTP服务器保存目录
     * @param fileExtension
     *            要上传的文件名的后缀名
     * @return 成功返回true,否则返回false
     */
    public boolean uploadFile(String formLocal, String toRemote, String fileExtension)
    {
        logger.info("FTP uploadFile from :" + formLocal + " to:" + toRemote);
        boolean success = false;
        FTPClient ftp = getClient();
        try
        {
            int reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply))
            {
                ftp.disconnect();
                logger.error("Ftp not response :" + reply);
                return success;
            }
            File local = new File(formLocal);
            if (!local.exists())
            {
                logger.error("local path not exist !");
                return false;
            }
            File[] dirFile = local.listFiles();
            int upCount = 0;
            for (File f : dirFile)
            {
                if (f.getName().endsWith(fileExtension))
                {
                    InputStream in = new FileInputStream(f);
                    ftp.changeWorkingDirectory(toRemote);
                    ftp.storeFile(f.getName(), in);
                    upCount++;
                    in.close();
                }
            }

            ftp.logout();
            if (upCount == 0)
            {
                logger.error(fileExtension + " file upload fail !");
            }
            else
            {
                success = true;
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
            logger.error("Ftp uploadFile Exception !", e);
        }
        finally
        {
            if (ftp.isConnected())
            {
                try
                {
                    ftp.disconnect();
                }
                catch (IOException ioe)
                {
                    logger.error("Ftp uploadFile disconnect ftp Exception !", ioe);
                }
            }
        }
        return success;
    }

    /**
     * Description: 从FTP服务器下载文件
     * 
     * @param formRemote
     *            FTP服务器上的相对路径
     * @param toLocal
     *            下载后保存到本地的路径
     * @param fileExtension
     *            要下载的文件名的后缀名
     * @return
     */
    public boolean downFile(String formRemote, String toLocal, String fileExtension)
    {
        boolean success = false;
        FTPClient ftp = getClient();
        try
        {
            int reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply))
            {
                ftp.disconnect();
                logger.error("Ftp not response :" + reply);
                return success;
            }
            File local = new File(toLocal);
            if (!local.exists())
            {
                logger.error("local path not exist !");
                return false;
            }
            ftp.changeWorkingDirectory(formRemote);// 转移到FTP服务器目录
            FTPFile[] fs = ftp.listFiles();
            int downCount = 0;
            for (FTPFile ff : fs)
            {
                if (ff.getName().endsWith(fileExtension))
                {
                    File localFile = new File(toLocal + "/" + ff.getName());
                    OutputStream is = new FileOutputStream(localFile);
                    ftp.retrieveFile(ff.getName(), is);
                    downCount++;
                    is.close();
                }
            }
            ftp.logout();
            if (downCount == 0)
            {
                logger.error(fileExtension + " file download fail !");
            }
            else
            {
                success = true;
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
            logger.error("Ftp downFile Exception !", e);
        }
        finally
        {
            if (ftp.isConnected())
            {
                try
                {
                    ftp.disconnect();
                }
                catch (IOException ioe)
                {
                    logger.error("Ftp downFile disconnect ftp Exception !", ioe);
                }
            }
        }
        return success;
    }

}


依赖jar包:commons-net-1.4.1.jar  jakarta-oro-2.0.8.jar

下载地址:http://download.csdn.net/detail/osmartshen/7781831

利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值