• Java实现FTP上传下载功能


    Java FTP客户端工具包很多,在此我选用的Apache的FTPClient。这个包的获取可以通过http://commons.apache.org/net/来获取,我使用的是最新的commons-net-1.4.1.zip。其中包含了众多的java网络编程的工具包,官方文档列举如下:

    1、支持网络协议如下: 

    FTP、NNTP、 SMTP、POP3、Telnet、TFTP、Finger、Whois、rexec/rcmd/rlogin、Time (rdate) and Daytime、Echo、Discard、NTP/SNTP
    都很有用,在此我用到的是FTP相关的一些包。

    2、配置FTP服务器

    在编写程序之前,先配置一个简单的FTP服务器,如下图:
     
    下面是一个使用FTPClient来实现的FTP上传和下载的功能,主要是对此包有个感性的认识。例程如下:
    import org.apache.commons.io.IOUtils; 
    import org.apache.commons.net.ftp.FTPClient; 
    
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.IOException; 
    import java.io.FileOutputStream; 
    
    /** 
    * Apache commons-net 试用一把,看看FTP客户端工具做的好用不 
    * 
    * @author : leizhimin,2008-8-20 14:00:38。<p> 
    */ 
    public class FtpTest { 
        public static void main(String[] args) { 
            testUpload(); 
            testDownload(); 
        } 
    
        /** 
         * FTP上传单个文件测试 
         */ 
        public static void testUpload() { 
            FTPClient ftpClient = new FTPClient(); 
            FileInputStream fis = null; 
            try { 
                ftpClient.connect("192.168.14.117"); 
                ftpClient.login("admin", "123"); 
                File srcFile = new File("C:\new.gif"); 
                fis = new FileInputStream(srcFile); 
                //设置上传目录 
                ftpClient.changeWorkingDirectory("/admin/pic"); 
                ftpClient.setBufferSize(1024); 
                ftpClient.setControlEncoding("GBK"); 
                //设置文件类型(二进制) 
                ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
                ftpClient.storeFile("3.gif", fis); 
            } catch (IOException e) { 
                e.printStackTrace(); 
                throw new RuntimeException("FTP客户端出错!", e); 
            } finally { 
                IOUtils.closeQuietly(fis); 
                try { 
                    ftpClient.disconnect(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                    throw new RuntimeException("关闭FTP连接发生异常!", e); 
                } 
            } 
        } 
    
        /** 
         * FTP下载单个文件测试 
         */ 
        public static void testDownload() { 
            FTPClient ftpClient = new FTPClient(); 
            FileOutputStream fos = null; 
            try { 
                ftpClient.connect("192.168.14.117"); 
                ftpClient.login("admin", "123"); 
                String remoteFileName = "/admin/pic/3.gif"; 
                fos = new FileOutputStream("c:/down.gif"); 
                ftpClient.setBufferSize(1024); 
                //设置文件类型(二进制) 
                ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 
                ftpClient.retrieveFile(remoteFileName, fos); 
            } catch (IOException e) { 
                e.printStackTrace(); 
                throw new RuntimeException("FTP客户端出错!", e); 
            } finally { 
                IOUtils.closeQuietly(fos); 
                try { 
                    ftpClient.disconnect(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                    throw new RuntimeException("关闭FTP连接发生异常!", e); 
                } 
            } 
        } 
    } 

    测试结果表明,文件上传、下载均成功!

    本文转自:http://lavasoft.blog.51cto.com/62575/93883/

  • 相关阅读:
    .NET Framework 精简版多线程提示
    创建全球化的 Windows Mobile 应用程序
    【转】Windows Mobile 进阶系列——多窗体应用的性能与编程调试1
    关于MOBILE注册表操作.
    windows下squid安装与配置
    关于Windows mobile注册表
    aaaaaaaaaaaaaa
    记GraphicsMagick压缩图片命令
    使用Sublime Text 2开发php
    SQL Server 2005中使用事务发布实现数据库复制
  • 原文地址:https://www.cnblogs.com/dreammyle/p/4096022.html
Copyright © 2020-2023  润新知