4ewx1j2204 发表于 2016-6-9 08:50:13

FTP测端解压gz格式文件

  package com.ustcinfo.hello;
  import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.GZIPInputStream;
  import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
  public class FTPClientTest {
 public static void main(String[] args){
  testFtpConnection();
 }
 
 public static void testFtpConnection(){
  FTPClient ftpClient1 = null;
  FTPClient ftpClient2 = null;
  try {
   ftpClient1 =getFTPClient("192.168.123.83", "icss", "icss123");
   ftpClient2 = getFTPClient("192.168.123.83", "icss", "icss123");
   String fileName=null;
   FTPFile[] files = ftpClient1.listFiles();
   for(int i=0;i<files.length;i++){
    FTPFile tempFile = files;
    fileName = new String(tempFile.getName().getBytes(),"utf-8");
    System.out.println("文件或文件目录;"+fileName);
    if("A_050157_000_20140111_01_0_001.data.gz".equals(fileName)){
     break;
    }
   }
   String outFileName = fileName.substring(0, fileName.lastIndexOf(".gz"));
   System.out.println("目录:"+outFileName);
   GZIPInputStream zip =null;
   OutputStream os = ftpClient2.storeFileStream(outFileName);
   InputStream is = ftpClient1.retrieveFileStream(fileName);
   zip = new GZIPInputStream(is);//ftpClient.GZIPOutputStream
   if(os!=null && is!=null){
    byte[] buf = new byte;
    int len=0;
    while((len=zip.read(buf))>0){
     os.write(buf,0,len);
    }
    is.close();
    os.flush();
    os.close();
   }else{
    System.out.println("输出流为null");
   }
   
  } catch (IOException e) {
   System.out.println("连接FTPClient端出现异常");
   e.printStackTrace();
  }finally{
   closeFTPConnection(ftpClient1);
   closeFTPConnection(ftpClient2);
  }
 }
 
 /**
  *
  * @param ip FTP服务器的ip地址
  * @param userName  FTP服务器的账号
  * @param passWord FTP服务器的密码
  * @return FTPClient 获得fTPClient
  */
 public static FTPClient getFTPClient(String ip,String userName,String passWord){
  FTPClient ftpClient = new FTPClient();
  try {
   int reply;
   ftpClient.connect(ip);
   ftpClient.login(userName, passWord);
   ftpClient.setDataTimeout(60*1000*1000);
   ftpClient.enterLocalPassiveMode();
   ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
   reply = ftpClient.getReplyCode();
   System.out.println(ftpClient.getReplyString());
   if(!FTPReply.isPositiveCompletion(reply)){
    ftpClient.disconnect();
    System.out.println("FTP服务器拒绝访问!");
    System.exit(1);
   }
  } catch (Exception e) {
   System.out.println("连接异常");
   e.printStackTrace();
  }
  return ftpClient;
 }
 
 /**
  *
  * @param ftpClient FTP客户端连接
  * 此方法主要是关闭ftpClient连接
  */
 public static void closeFTPConnection (FTPClient ftpClient){
  if(ftpClient != null){
   if(ftpClient.isConnected()){
    try {
     ftpClient.logout();
     ftpClient.disconnect();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
  }
页: [1]
查看完整版本: FTP测端解压gz格式文件