javaでftp接続テストプログラム(commons-ftp)

シェアする

  • このエントリーをはてなブックマークに追加
FTP接続テストでなんだかよくわからない状況になってしまったときのために簡単なFTP接続テストプログラムを作ったので、ついでに公開します。
commons-net 2.0を使ってます。
もしかしたら動かないかも?動かなかったらゴメンナサイで。

エラー処理とかもろもろはちゃんとしていないので、あくまでご参考までということでよろしくお願いします。

2009.7.7追記: コメントでご指摘いただいたエラー処理を少し追加しました。少しだけ立派になった!
package jp.netmark.ftptest;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class Ftptest {
/**
* @param args
*/
public static void main(String[] args) {
if (args.length != 3) {
System.err
.println("args[0]=host, args[1]=username, args[2]=password");
System.exit(1);
}
String address = args[0];
String username = args[1];
String password = args[2];
boolean passiveOK = execute(address, username, password, true);
boolean activeOK = execute(address, username, password, false);
System.out.println("------------------------");
System.out.println("Check Result:");
System.out.println("Passive Mode\t=>" + (passiveOK ? "OK" : "NG"));
System.out.println("Active Mode\t=>" + (activeOK ? "OK" : "NG"));
}
private static boolean execute(String address, String username,
String password, boolean usePassiveMode) {
boolean success = false;
FTPClient client = new FTPClient();
try {
System.out.println("connect");
client.connect(address);
System.out.println(client.getReplyString());
client.login(username, password);
System.out.println(client.getReplyString());
if (!FTPReply.isPositiveCompletion(client.getReplyCode())) {
System.out.println("*** Login Failed ***");
client.disconnect();
return false;
}
if (usePassiveMode) {
client.enterLocalPassiveMode();
System.out.println(client.getReplyString());
} else {
client.enterLocalActiveMode();
System.out.println(client.getReplyString());
}
client.pwd();
System.out.println(client.getReplyString());
String fileNames[] = client.listNames();
success = FTPReply.isPositiveCompletion(client.getReplyCode());
System.out.println(client.getReplyString());
if (fileNames != null) {
for (int i = 0; i < fileNames.length; i++) {
System.out.println(fileNames[i]);
}
}
client.logout();
System.out.println(client.getReplyString());
client.disconnect();
} catch (Exception e) {
if (client.isConnected()) {
try {
client.disconnect();
} catch (IOException ignore) {
}
}
e.printStackTrace();
}
return success;
}
}

ads

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

ads

コメント

  1. 。w。 より:

    arugmentsを2個以下にした場合、IndexArrayOutOfBoundsExcdeptionが発生しません? エラー表示後に System.exit()をしてないので。

  2. Toshiaki Baba より:

    ■。w。さん(?) でますね~。。 指摘ありがとうございます。 手抜きがばれちゃった(^^; こっそりSystem.exit(1)入れておきます。