[java] Commons Net 예제
걍 FTP 관련된 질문이 많이들 올라오는데..
예전 sun 패키지를 이용하는 경우가 많더군요.
그래서 commons net 의 api를 잠깐 살펴보고
listing과 get을 한번 해보았습니다.
두가지가 쉽고 빠르게 되었으니..
다른 것들도 쉽게 지원이 되겠지요.
맘에 드네요 ^^;;
ps : 라이브러리로 필요한 것은.. commons net, oro, commons lang 입니다.
---------------------------------------------------------------
/*
* Created on 2004. 12. 11.
*/
package ftp;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPListParseEngine;
/**
* @author seveny
*/
public class FTPClientTest1 {
public static void main(String[] args) {
FTPClient client = null;
// 로그인
try {
client = new FTPClient();
client.setCommandEncoding("euc-kr");
System.out.println("FTP Client Test Program with Commons NET");
System.out.println("test by seveny (2004.12.13)");
System.out.println();
client.connect("ftp.ibiblio.org");
System.out.println("Connected to ftp.ibiblio.org...");
client.login("anonymous", "anonymous");
System.out.println("anonymous login success...");
} catch (Exception e) {
System.out.println("ftp 로그인 실패");
e.printStackTrace();
System.exit(-1);
}
System.out.println("Listing /pub/languages/java/javafaq ...");
System.out.println();
// 리스팅
try {
FTPListParseEngine engine = client.initiateListParsing("unix", "pub/languages/java/javafaq");
System.out.println(" " + StringUtils.rightPad("Name", 30) + StringUtils.leftPad("Size", 10) + " ");
System.out.println("-" + StringUtils.leftPad("-", 30, "-") + StringUtils.leftPad("-", 10, "-") + "-");
int total = 0;
while (engine.hasNext()) {
FTPFile[] files = engine.getNext(25);
total += files.length;
for (int i = 0; i < files.length; i++) {
FTPFile file = files[i];
System.out.println(StringUtils.rightPad(" " + file.getName(), 30) + StringUtils.leftPad("" + file.getSize(), 10) + " ");
}
}
System.out.println("-" + StringUtils.leftPad("-", 30, "-") + StringUtils.leftPad("-", 10, "-") + "-");
System.out.println(" total : " + total);
System.out.println();
} catch (Exception e) {
System.out.println("ftp 리스팅 실패");
e.printStackTrace();
System.exit(-1);
}
System.out.println();
System.out.println("Getting javaio.jar...");
try {
File file = new File("d:\\javaio.jar");
OutputStream fos = new FileOutputStream(file);
if (client.retrieveFile("pub/languages/java/javafaq/javaio.jar", fos) == true)
System.out.println("Success to getting javaio.jar... (size : " + file.length() + ")");
fos.close();
System.out.println();
} catch (Exception e) {
System.out.println("File Get 실패");
e.printStackTrace();
System.exit(-1);
}
// 로그 아웃
try {
client.logout();
System.out.println("Logged out");
} catch (Exception e) {
System.out.println("ftp 로그아웃 실패 : " + e);
}
if (client.isConnected())
try {
client.disconnect();
} catch (IOException e1) {
e1.printStackTrace();
}
client = null;
}
}