Java实现FTP相关操作

本文介绍了一个使用Java实现的FTP工具类,包括文件上传和下载的功能。该工具类通过简单的构造函数初始化FTP服务器连接参数,并提供了获取FTP客户端、关闭连接等方法。
/**
 * Created by 刘万祥 on 2016/4/29.
 *
 */
public class FtpTool {

    /*ftp用户名*/
    private String userName;
    /*ftp密码*/
    private String password;
    /*ftp服务器ip*/
    private String ip;
    private FTPClient ftpClient;


    public FtpTool(String userName, String password, String ip){
        this.userName = userName;
        this.password = password;
        this.ip = ip;

    }

        /**
         * 上传文件
         *
         * @param  f 要上传的文件
         * @param  uploadDir 上传文件的路径
         *
         * @return boolean b 上传结果
         * */
        public boolean putFile(File f,String uploadDir) {
            InputStream instream = null;
            boolean result = false;
            try{
                try{
                    ftpClient.changeWorkingDirectory(uploadDir);
                    instream = new BufferedInputStream(new FileInputStream(f));
                    result = ftpClient.storeFile(f.getName(), instream);
                }finally{
                    if(instream!=null){
                        instream.close();
                    }
                }
            }catch(IOException e){
                e.printStackTrace();
            }

            return result;
        }

        /**
         * 从ftp服务器下载文件
         *
         * @param  f 要获取的ftp服务器上的文件
         * @param  localPath 本地存放的路径
         *
         * @return boolean 文件下载是否成功
         * */
        public boolean getFile(File f  , String localPath){
            OutputStream outStream = null;
            boolean result = false;
            try{
                try{
                    outStream = new BufferedOutputStream(new FileOutputStream(new File(localPath)));
                    String path = f.getPath();
                    path = path.replaceAll("\\\\", "/");
                    String filepath = path.substring(0, path.lastIndexOf("/")+1)+"";
                    String fileName = path.substring(path.lastIndexOf("/")+1)+"";
                    boolean b = ftpClient.changeWorkingDirectory(filepath);
                    if(b){
                        result = ftpClient.retrieveFile(fileName, outStream);
                    }
                }finally{
                    if(outStream != null){
                        outStream.close();
                    }
                }
            }catch(IOException e){
                e.printStackTrace();
            }
            return result;
        }
        /**
         * 获取ftp链接
         *
         * @return ftpClient
         * */
        public FTPClient getFTPClient(){

            try {
                ftpClient = new FTPClient();

                ftpClient.connect(ip);
                ftpClient.login(userName, password);
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return ftpClient;
        }

        /**
         *  关闭ftpClient链接
         *
         *  @param ftpClient 要关闭的ftpClient对象
         *
         * */
        public void closeFTPClient(FTPClient ftpClient){
            try {
                try{
                    ftpClient.logout();
                }finally{
                    ftpClient.disconnect();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }



    public static void main(String[] args) {
        FtpTool test=new FtpTool("liuwx","123","127.0.0.1");
        FTPClient   client= test.getFTPClient();
        System.out.println(client.isAvailable());
        System.out.println(client.isConnected());

//        File    file=new File("D:/160429.txt");
//        boolean flag= test.putFile(file,"/");
//        System.out.println(flag);

//        System.out.println(test.getFile(new File("160429.txt"), "D:/123/160429.txt"));

    }
}


转载于:https://my.oschina.net/u/1170781/blog/670655

数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)内容概要:本文围绕“数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究”展开,提出了一种结合数据驱动与分布鲁棒优化方法的建模框架,用于解决电热综合能源系统在不确定性环境下的优化调度问题。研究采用两阶段优化结构,第一阶段进行预决策,第二阶段根据实际场景进行调整,通过引入1-范数和∞-范数约束来构建不确定集,有效刻画风电、负荷等不确定性变量的波动特性,提升模型的鲁棒性和实用性。文中提供了完整的Matlab代码实现,便于读者复现和验证算法性能,并结合具体案例分析了不同约束条件下系统运行的经济性与可靠性。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及工程技术人员,尤其适合从事综合能源系统、鲁棒优化、不确定性建模等相关领域研究的专业人士。; 使用场景及目标:①掌握数据驱动的分布鲁棒优化方法在综合能源系统中的应用;②理解1-范数和∞-范数在构建不确定集中的作用与差异;③学习两阶段鲁棒优化模型的建模思路与Matlab实现技巧,用于科研复现、论文写作或工程项目建模。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现细节,重点关注不确定集构建、两阶段模型结构设计及求解器调用方式,同时可尝试更换数据或调整约束参数以加深对模型鲁棒性的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值