ITPub博客

首页 > 数据治理 > 数据治理 > java整个目录上传至ftp,上传、下载、删除文件

java整个目录上传至ftp,上传、下载、删除文件

原创 数据治理 作者:风吹不散的云朵 时间:2020-10-15 17:10:46 0 删除 编辑

  * 连接FTP服务器

     *

     * @param address  地址

     * @param port     端口

     * @param username 用户名

     * @param password 密码

     */

    private void login() {

        ftpClient = new FTPClient();

        ftpClient.setControlEncoding("utf-8");

        try {

            ftpClient.connect(hostname, port);

            ftpClient.login(username, password);

            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//文件类型为二进制文件

            ftpClient.setBufferSize(BUFFER_SIZE);//限制缓冲区大小

            int reply = ftpClient.getReplyCode();

            if (!FTPReply.isPositiveCompletion(reply)) {

                closeConnect();

                System.out.println("FTP服务器连接失败");

            }

        } catch (Exception e) {

            System.out.println("FTP登录失败" + e.getMessage());

        }

    }


    /**

     * 关闭FTP连接

     */

    private void closeConnect() {

        if (ftpClient != null && ftpClient.isConnected()) {

            try {

                ftpClient.logout();

                ftpClient.disconnect();

            } catch (IOException e) {

                System.out.println("关闭FTP连接失败" + e.getMessage());

            }

        }

    }

    

    /**

     * 下载文件

     * @param ftpPath FTP文件目录

     * @param fileName 需下载的文件名

     * @param savePath 下载后的文件路径

     * @return 返回是否下载成功 true

     */

    public Boolean downLoadFile(String ftpPath, String fileName, String savePath){

        login();

        OutputStream os = null;

        if (ftpClient != null) {

            try {

                //判断是否存在该目录

                if (!ftpClient.changeWorkingDirectory(ftpPath)) {

                    System.out.println("/" + ftpPath + "该目录不存在");

                    return false;

                }

                ftpClient.enterLocalPassiveMode();//设置被动模式,开通一个端口来传输数据


                FTPFile[] ftpFiles = ftpClient.listFiles();

                // 判断该目录下是否有文件

                if (ftpFiles == null || ftpFiles.length == 0) {

                    System.out.println("/" + ftpPath + "该目录下无文件");

                    return false;

                }

                for(FTPFile file : ftpFiles){

                    if(fileName.equals("") || fileName.equalsIgnoreCase(file.getName())){//文件名称为"",下载指定文件

                        if(!file.isDirectory()){//是否文件夹 

                            File saveFile = new File(savePath + "/" + file.getName()); 

                            os = new FileOutputStream(saveFile); 

                            ftpClient.retrieveFile(file.getName(), os); 

                            os.close(); 

                        }

                    }

                }

                return true;

            } catch (IOException e) {

                System.out.println("下载文件失败" + e.getMessage());

            } finally {

                if(null != os){

                    try {

                        os.close();

                    } catch (IOException e) {

                        e.printStackTrace();

                    } 

                }

                closeConnect();

            }

        }

        return false;

    }


    /**

    * 上传文件

    * @param savePath FTP保存目录

    * @param fileName 上传到FTP的文件名

    * @param filePath 待上传文件的名称(绝对地址)

    * @return

    */

    public boolean uploadFile(String savePath, String fileName,String filePath){

        login();

        boolean flag = false;

        InputStream inputStream = null;

        if (ftpClient != null) {

            try{

                inputStream = new FileInputStream(new File(filePath));

                ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);

                ftpClient.makeDirectory(savePath);

                ftpClient.changeWorkingDirectory(savePath);

                ftpClient.storeFile(fileName, inputStream);

                inputStream.close();

                flag = true;

            }catch (Exception e) {

                e.printStackTrace();

            }finally{

                if(null != inputStream){

                    try {

                        inputStream.close();

                    } catch (IOException e) {

                        e.printStackTrace();

                    } 

                }

                closeConnect();

            }

        }

        return flag;

    }


    /** * 删除文件 * 

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

    * @param filename 要删除的文件名称 

    * @return */ 

    public boolean deleteFile(String filePath, String filename){

        login();

        boolean flag = false; 

        if (ftpClient != null) {

            try { 

                ftpClient.changeWorkingDirectory(filePath);

                ftpClient.dele(filename); 

                flag = true; 

            } catch (Exception e) { 

                e.printStackTrace(); 

            } finally {

                closeConnect();

            }

        }

        return flag; 

    }

    

}



服务器管理工具-FTP客户端( fwqglgj.iis7.net/cp/ftp/?zyd-zc) 具体功能:

1.自动重连;

2.自动重传;

3.定时任务(定时上传、定时下载);

4.自定义传输模式、线程、编码;

5.删除到回收站;

6.大量文件快速加载、边加载边传输;

7.批量连接、一键关闭


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69975456/viewspace-2727238/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-05-22

  • 博文量
    7
  • 访问量
    10596