LinuxからWindowsのIIS付属のFTPサーバーにアクセスするFTPクライアントのサンプルです。jakartaのcommonsのnetを使ってます。固まらないと思います。
2008/01/21
commons
ftp
java
linux
windows
どうもLinuxの環境設定によって、FTPクライアントが固まるようになる場合があるので、それをさけるために、enterRemotePassiveMode、enterLocalPassiveModeを続けて呼んでいます。
この呼び出し順序でも動作が変わるようです。
サーバーがWindowsなので、setControlEncodingを設定しています。
多分、動くと思います。
org.apache.commons.net.ftp.FTPClient
よかったら動かしてみてください。
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class TestFtpClient4 {
/**
* LINUXからWindowsのIIS付属のFTPサーバーに接続します。
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
FTPClient client = new FTPClient();
// エンコーディング
client.setControlEncoding("SJIS");
try {
client.setDefaultPort(21);
// (1)
client.connect("アドレス"); // FTPサーバーのIPアドレス
// (2)
client.login("Anonymous", "passowrd"); // FTPサーバーのID,パスワード
// (3)
boolean isRemotePassive = client.enterRemotePassiveMode();
// (4)
client.enterLocalPassiveMode();
// (5)
boolean isOk = client.changeWorkingDirectory("/");
System.out.println("isOk" + isOk);
// (6)
FTPFile[] list = client.listFiles();
for (int i = 0; i < list.length; i++) {
String name = list[i].getName();
String group = list[i].getGroup();
System.out.println("group : " + group);
System.out.println("name : " + name);
}
} catch (SocketException e) {
throw e;
} catch (IOException e) {
throw e;
} finally {
if (client != null && client.isConnected()) {
try {
client.logout();
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("終了");
}
}
}
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
public class TestFtpClient4 {
/**
* LINUXからWindowsのIIS付属のFTPサーバーに接続します。
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
FTPClient client = new FTPClient();
// エンコーディング
client.setControlEncoding("SJIS");
try {
client.setDefaultPort(21);
// (1)
client.connect("アドレス"); // FTPサーバーのIPアドレス
// (2)
client.login("Anonymous", "passowrd"); // FTPサーバーのID,パスワード
// (3)
boolean isRemotePassive = client.enterRemotePassiveMode();
// (4)
client.enterLocalPassiveMode();
// (5)
boolean isOk = client.changeWorkingDirectory("/");
System.out.println("isOk" + isOk);
// (6)
FTPFile[] list = client.listFiles();
for (int i = 0; i < list.length; i++) {
String name = list[i].getName();
String group = list[i].getGroup();
System.out.println("group : " + group);
System.out.println("name : " + name);
}
} catch (SocketException e) {
throw e;
} catch (IOException e) {
throw e;
} finally {
if (client != null && client.isConnected()) {
try {
client.logout();
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("終了");
}
}
}
: