zoukankan      html  css  js  c++  java
  • FTPClient文件下载

    一、FTPClient下载文件所需要的jar包:

      org.apache.commons.net  【commons-net-3.4.jar】

    二、FTPClient的连接和关闭

    //FTPClient的连接
        public FTPClient ftpConnecting(String IP, int port,String username,String pwd){
            FTPClient ftpClient=new FTPClient();
            
            try {
                //连接IP 如果port【端口】存在的话
                ftpClient.connect(IP,port);
                
                //登录
                ftpClient.login(username, pwd);
                
                //连接尝试后,应检查回复代码以验证
                int reply=ftpClient.getReplyCode();
                if(!FTPReply.isPositiveCompletion(reply)){  //没验证成功
                    //断开ftp连接
                    ftpClient.disconnect();
                    return null;
                }
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            
            return ftpClient;
        }

    关闭:

    //FTPClient 的关闭
        public void ftpClose(FTPClient ftpClient){
            if(ftpClient.isConnected()){
                try {
                    ftpClient.disconnect();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    注意:在连接FTPClient的时候,一些默认的属性要进行设置。如

    setBufferSize(int bufSize):设置文件转移时候的一次性读取大小;

     setFileType(int fileType) :设置文件转移的时候,文件的格式。默认的是: FTP.ASCII_FILE_TYPE;但是我们一般需要的格式是:FTP.BINARY_FILE_TYPE。因此,为了保证转移文件的准确性,可以进行如下设置:

    ftpClient.setBufferSize(1024);
    ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
    
    //可以忽略换行符【
    |
    】等在不同平台之间产生的差异,保证文件大小一致。 对于打印字符【CR|LF】也可以正确的转移。

    三、通过FTPClient下载文件

        /**
         * FTPClient 下载文件
         * @param remotePath : ftp上的地址:   /export/home/test.txt
         * @param localPath:本地存放文件的地址 如:D:EDI_TEST_FILE0ec9bcfbcc441c699301fac111feb03Sybasefact	est.txt
         */
        public void getFileByFtp(String remotePath,String localPath){
            File localFile=new File(localPath);
            OutputStream ous=null;
            FTPClient client=ftpConnecting("122.22.222.111", 8080,"name","pwd");
            try {
                ous=new FileOutputStream(localFile);
                client.retrieveFile(remotePath, ous);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

     四、简单测试例子

    public static void main(String[] args) {
      //保证文件名一致
         FtpTest.getFileByFtp("/export/home/I_14096D46F88D617FA0B80D0B3B6D1EF5","D:/fact/I_14096D46F88D617FA0B80D0B3B6D1EF5");
     }
  • 相关阅读:
    利用Response.Buffer做类似异步效果
    web集群时session同步的3种方法
    LVS之DR跨网段实战及高可用性
    LVS之DR模式实战及高可用性
    LVS-DR实现web调度模式
    LVS之-LAMP搭建wordpress
    LVS-NAT搭建HTTP及HTTPS
    实现NFS共享wordpress
    LAMP一键安装
    在centos6上实现编译安装lamp和wordpress,并编译xcache
  • 原文地址:https://www.cnblogs.com/renxiaoren/p/5319473.html
Copyright © 2011-2022 走看看