您的位置:首页 > 编程语言 > PHP开发

ftp服务器文件上传下载

2017-07-25 14:57 441 查看
package com.liucb.ftputil;

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

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

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

import java.io.*;

/**

 * windows系统下配置FTP服务器

 * IP 本机IP地址

 * 端口 21

 * ftp目录 D:/liucbftp

 */

public class FtpUtil {

    //连接ftp服务器

    public static FTPClient connection(String url,int port,String userName,String password){

        FTPClient ftp = new FTPClient();

        try {

            int reply;

            ftp.connect(url, port);//连接FTP服务器

            //如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器

            ftp.login(userName, password);//登录

            reply = ftp.getReplyCode();

            if (!FTPReply.isPositiveCompletion(reply)) {

                ftp.disconnect();

                return null;

            }

        } catch (IOException e) {

            e.printStackTrace();

        }

        return ftp;

    }

    //文件上传

    /**

     * Description: 向FTP服务器上传文件

     * @param url FTP服务器hostname

     * @param port FTP服务器端口

     * @param username FTP登录账号

     * @param password FTP登录密码

     * @param path FTP服务器保存目录

     * @param file 上传到FTP服务器上的文件

     * @param newFileName 上传到FTP服务器后的文件名

     * @return 成功返回true,否则返回false

     */

    public static boolean uploadFile(String url,int port,String username, String password, String path, File file,String newFileName) {

        boolean success = false;

        FTPClient ftp = FtpUtil.connection(url,port,username,password);

        if(ftp!=null){

            try {

                ftp.changeWorkingDirectory(path);

                InputStream input = new FileInputStream(file);

                ftp.storeFile(newFileName, input);

                input.close();

                ftp.logout();

                success = true;

            } catch (Exception e) {

                e.printStackTrace();

            } finally {

                if (ftp.isConnected()) {

                    try {

                        ftp.disconnect();

                    } catch (Exception ioe) {

                    }

                }

            }

        }

        return success;

    }

    //文件下载

    /**

     * Description: 从FTP服务器下载文件

     * @param url FTP服务器hostname

     * @param port FTP服务器端口

     * @param username FTP登录账号

     * @param password FTP登录密码

     * @param remotePath FTP服务器上的相对路径

     * @param fileName 要下载的文件名

     * @param localPath 下载后保存到本地的路径

     * @return

     */

    public static boolean downloadFile(String url, int port,String username, String password, String remotePath,String fileName,String localPath) {

        boolean success = false;

        FTPClient ftp = FtpUtil.connection(url,port,username,password);

        if(ftp!=null){

            try {

                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 (Exception e) {

                e.printStackTrace();

            } finally {

                if (ftp.isConnected()) {

                    try {

                        ftp.disconnect();

                    } catch (Exception ioe) {

                    }

                }

            }

        }

        return success;

    }

    public static void main(String[] args) {

       //上传测试

       try {

            File file = new File("F:/jins.xlsx");

            boolean flag = uploadFile("172.18.22.99", 21, "Administrator", "toor", "D:/liucbftp", file ,"liucb.xlsx");

            System.out.println(flag);

        } catch (Exception e) {

            e.printStackTrace();

        }

        //下载测试

        /*

        boolean flag = downloadFile("172.18.22.99", 21, "Administrator", "toor", "D:/liucbftp", "jins.xlsx","E:");

        System.out.println(flag);

        */

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: