|
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[1024];
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();
}
}
}
}
} |
|
|