基于commons-net实现ftp创建文件夹、上传、下载功能

原文:http://www.open-open.com/code/view/1420774470187

package com.demo.ftp;  

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.net.ConnectException;  

    import org.apache.commons.net.PrintCommandListener;
    import org.apache.commons.net.ftp.FTP;
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPReply;  

    /**
     * @author wobendiankun 2015-1-8 下午08:11:08
     */
    public class FtpClientUtil {
        /**
         * ftp服务器地址
         */
        private  String server;
        /**
         * 端口
         */
        private  int port;
        /**
         * 用户名
         */
        private  String username;
        /**
         *
         */
        private  String password;  

        public FtpClientUtil () {
            server = "localhost";
            port = 21;
            username = "kun";
            password = "111111";
        }  

        public FtpClientUtil(String server, int port, String username,
                String password) {
            this.server = server;
            this.port = port;
            this.username = username;
            this.password = password;
        }
        /**上传文件
         * @param remoteFileName 远程文件名称
         * @param locaFileName 本地文件名称
         */
        public void upload(String remoteFileName,String locaFileName){
            FTPClient ftp=null;
            try {
                ftp = new FTPClient();
                ftp.addProtocolCommandListener( new PrintCommandListener( new PrintWriter( System.out ), true ) );
                //连接ftp服务器
                connect( ftp );
                //设置属性
                setProperty( ftp );
                //上传文件
                upload( ftp, remoteFileName, locaFileName );
                //退出
                logout( ftp );
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                if (ftp.isConnected()) {
                    try {
                        ftp.disconnect();
                    } catch (IOException f) {
                    }
                }
            }  

        }
        /**上传文件
         * @param remoteFileName 远程文件名称
         * @param locaFileName 本地文件名称
         */
        public void download(String remoteFileName,String locaFileName){
            FTPClient ftp=null;
            try {
                ftp = new FTPClient();
                ftp.addProtocolCommandListener( new PrintCommandListener( new PrintWriter( System.out ), true ) );
                //连接ftp服务器
                connect( ftp );
                //设置属性
                setProperty( ftp );
                //下载文件
                download( ftp, remoteFileName, locaFileName );
                //退出
                logout( ftp );
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                if (ftp.isConnected()) {
                    try {
                        ftp.disconnect();
                    } catch (IOException f) {
                    }
                }
            }
        }
        /**创建文件夹
         * @param remotePathName 远程文件夹名称
         */
        public void mkdir(String remotePathName) {
            FTPClient ftp=null;
            try {
                ftp = new FTPClient();
                ftp.addProtocolCommandListener( new PrintCommandListener( new PrintWriter( System.out ), true ) );
                //连接ftp服务器
                connect( ftp );
                //设置属性
                setProperty( ftp );
                //创建文件夹
                mkdir( ftp, remotePathName);
                //退出
                logout( ftp );
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                if (ftp.isConnected()) {
                    try {
                        ftp.disconnect();
                    } catch (IOException f) {
                    }
                }
            }
        }
        /**
         * @param ftp
         * @param remotePathName
         */
        private void mkdir(FTPClient ftp, String remotePathName) throws Exception{
            ftp.makeDirectory(remotePathName);
        }  

        /**
         * @param ftp
         * @param remoteFileName
         * @param locaFileName
         */
        private void download(FTPClient ftp, String remoteFileName,
                String locaFileName) throws Exception{
            OutputStream output=null;
            output = new FileOutputStream(locaFileName);
            ftp.retrieveFile(remoteFileName, output);
            output.close();
        }  

        /**
         * @param ftp
         * @throws Exception
         */
        private void setProperty(FTPClient ftp) throws Exception {
            ftp.enterLocalPassiveMode();
            //二进制传输,默认为ASCII
            ftp.setFileType(FTP.BINARY_FILE_TYPE);
        }  

        /**
         * @param ftp
         */
        private void logout(FTPClient ftp) throws Exception{
            ftp.noop();
            ftp.logout();
        }  

        /**
         * @param ftp
         * @param remoteFileName
         * @param locaFileName
         */
        private void upload(FTPClient ftp, String remoteFileName,
                String locaFileName) throws Exception{
            //上传
            InputStream input;  

            input = new FileInputStream(locaFileName);  

            ftp.storeFile(remoteFileName, input);  

            input.close();
        }  

        /**
         * @param ftp
         */
        private void connect(FTPClient ftp) throws Exception{
            //连接服务器
            ftp.connect( server, port);
            int reply = ftp.getReplyCode();
            //是否连接成功
            if ( !FTPReply.isPositiveCompletion( reply ) )         {
                throw new ConnectException( server+" 服务器拒绝连接" );
            }
            //登陆
            if (!ftp.login(username, password)) {
                 throw new ConnectException( "用户名或密码错误" );
            }
        }
    }  

FtpTest
    package com.demo.ftp;  

    /**
     * @author wobendiankun 2015-1-8 下午08:34:36
     */
    public class FtpTest {  

        public static void main(String[] args) {
            //上传文件
            //upload();
            //下载文件
            //download();
            //创建文件夹
            mkdir();
        }  

        /**
         *
         */
        private static void mkdir() {
            FtpClientUtil clientUtil=new FtpClientUtil();
            clientUtil.mkdir("test");
        }  

        /**
         *
         */
        private static void download() {
            String remoteFileName="./111.txt";
            String locaFileName="F:\\test\\txt\\3333.txt";
            FtpClientUtil clientUtil=new FtpClientUtil();
            clientUtil.download(remoteFileName, locaFileName);
        }  

        /**
         *
         */
        private static void upload() {
            String remoteFileName="./111.txt";
            String locaFileName="F:\\test\\txt\\aaa.txt";
            FtpClientUtil clientUtil=new FtpClientUtil();
            clientUtil.upload(remoteFileName, locaFileName);
        }
    }  
时间: 2024-08-29 15:25:09

基于commons-net实现ftp创建文件夹、上传、下载功能的相关文章

Asp.net实现MVC处理文件的上传下载功能实例教程

这篇文章主要介绍了Asp.net实现MVC处理文件的上传下载功能,比较全面而系统的对Asp.net MVC的文件上传下载功能进行了深入分析,有很好的借鉴价值,需要的朋友可以参考下 上传于下载功能是程序设计中非常常见的一个功能,在ASP.NET程序开发中有着非常广泛的应用.本文就以实例形式来实现这一功能. 一.概述 如果你仅仅只有Asp.net Web Forms背景转而学习Asp.net MVC的,我想你的第一个经历或许是那些曾经让你的编程变得愉悦无比的服务端控件都驾鹤西去了.FileUploa

web文件夹上传下载方案

第一点:Java代码实现文件上传 FormFile file = manform.getFile(); String newfileName = null; String newpathname = null; String fileAddre = "/numUp"; try { InputStream stream = file.getInputStream();// 把文件读入 String filePath = request.getRealPath(fileAddre);//取

asp.net Web 项目的文件/文件夹上传下载

以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  可以带参数 [HttpPost("upload")] public JsonResult uploadProject(IFormFile file, string userId) { if (file != null) { var fileDir = "D:\\aaa"

.net Web 项目的文件/文件夹上传下载

以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  可以带参数 [HttpPost("upload")] public JsonResult uploadProject(IFormFile file, string userId) { if (file != null) { var fileDir = "D:\\aaa"

前端文件夹上传下载组件

1.介绍enctype enctype 属性规定发送到服务器之前应该如何对表单数据进行编码. enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样) 1.1 enctype的取值有三种 值 描述 application/x-www-form-urlencoded 在发送前编码所有字符(默认) multipart/form-data 不对字符编码.每一个表单项分割为一个部件 text/plain 空格转换为 “+” 加号,但不对特殊字符编码. 1. 当

文件夹上传插件webupload插件

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所有浏览器. 支持文件批量上传 支持文件夹上传,且要求在服务端保留层级结构.文件夹数量要求支持到10W. 支持大文件断点续传,要求刷新浏览器,重启浏览器,重启电脑后仍然能够继续上传.文件大小要求能够支持到50个G. 支持自动加载本地文件,要求能够自动加载指定的本地文件. 支持文件批量下载,要求不要在服

Web大文件(夹)上传(断点续传)控件-Xproer.HttpUploader6

版权所有 2009-2017荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/index.asp 在线演示:http://www.ncmem.com/products/up6.3/index.htm 产品介绍:http://www.cnblogs.com/xproer/archive/2012/10/26/2741264.html 升级日志:http://www.cnblogs.

js文件夹上传

文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹.今天研究了一下这个问题,在此记录. 先说两个问题: 是否所有后端框架都支持文件夹上传? 是否所有浏览器都支持文件夹上传? 第一个问题:YES,第二个问题:NO 只要后端框架对于表单的支持是完整的,那么必然支持文件夹上传.至于浏览器,截至目前,只有 Chrome 支持. 如果需要其它的浏览器支持则需要

vue文件夹上传组件选哪个好?

一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输.关闭浏览器后保留进度信息. 支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端文件夹层级结构与本地相同. 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验:支持文件夹上传,文件夹中的文件数量达到1万个以上,且包含层级结构. 支持断点续传,关闭浏览器或刷新浏览