Java Language
FTP(ファイル転送プロトコル)
サーチ…
構文
- FTPClient connect(InetAddressホスト、intポート)
- FTPClientログイン(文字列ユーザー名、文字列パスワード)
- FTPClient disconnect()
- FTPReply getReplyStrings()
- boolean storeFile(String remote、InputStream local)
- OutputStream storeFileStream(String remote)
- boolean setFileType(int fileType)
- boolean completePendingCommand()
パラメーター
パラメーター | 詳細 |
---|---|
ホスト | FTPサーバーのホスト名またはIPアドレス |
港 | FTPサーバーポート |
ユーザー名 | FTPサーバーのユーザー名 |
パスワード | FTPサーバーのパスワード |
FTPサーバーへの接続とログイン
JavaでFTPを使用するには、新しいFTPClient
を作成し、 .connect(String server, int port)
と.login(String username, String password)
を使用してサーバーに接続してログインする必要があり.login(String username, String password)
。
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
//Import all the required resource for this project.
public class FTPConnectAndLogin {
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com"; //Server can be either host name or IP address.
int port = 21;
String user = "Username";
String pass = "Password";
FTPClient ftp = new FTPClient;
ftp.connect(server, port);
ftp.login(user, pass);
}
}
これで基本が完成しました。しかし、サーバーに接続する際にエラーが発生した場合はどうすればよいでしょうか?何かがうまくいかないときを知り、エラーメッセージを受け取ることが必要になります。接続中にエラーを捕捉するコードを追加しましょう。
try {
ftp.connect(server, port);
showServerReply(ftp);
int replyCode = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.printIn("Operation failed. Server reply code: " + replyCode)
return;
}
ftp.login(user, pass);
} catch {
}
私たちがやったことを一歩一歩踏みこんでみましょう。
showServerReply(ftp);
これは、後の段階で作成する関数を指します。
int replyCode = ftp.getReplyCode();
これは、サーバーからの応答/エラーコードを取得し、整数として格納します。
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.printIn("Operation failed. Server reply code: " + replyCode)
return;
}
これは、エラーがあったかどうかを確認するために応答コードをチェックします。エラーが発生した場合は、単に「操作に失敗しました。サーバー応答コード:」とエラーコードが印刷されます。またtry / catchブロックを追加し、次のステップで追加します。次に、 ftp.login()
のエラーをチェックする関数を作成しましょう。
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
このブロックを崩しましょう。
boolean success = ftp.login(user, pass);
これは、FTPサーバーへのログインを試みるだけでなく、結果をブール値として保存します。
showServerReply(ftp);
これにより、サーバーからのメッセージが送信されたかどうかが確認されますが、まず次の手順で関数を作成する必要があります。
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
このステートメントは、正常にログインしたかどうかを確認します。そうであれば、 "LOGGED IN SERVER"と表示されます。それ以外の場合は、 "サーバへのログインに失敗しました"と表示されます。これはこれまでのスクリプトです:
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPConnectAndLogin {
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com";
int port = 21;
String user = "username"
String pass = "password"
FTPClient ftp = new FTPClient
try {
ftp.connect(server, port)
showServerReply(ftp);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch {
}
}
}
次に、プロセス全体でエラーが発生した場合に備えて、Catchブロックを作成しましょう。
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
完了したキャッチブロックに「Oops!Something went wrong」と表示されるようになりました。エラーがある場合はスタックトレースを返します。今、私たちの最後のステップは、今使っているshowServerReply()
を作成することshowServerReply()
。
private static void showServerReply(FTPClient ftp) {
String[] replies = ftp.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
この関数は、 FTPClient
を変数として取り、それを "ftp"と呼びます。その後、サーバからの任意のサーバ応答を文字列配列に格納します。次に、メッセージが格納されているかどうかを確認します。いずれかがある場合は、それぞれを「SERVER:[reply]」として出力します。その機能が完了したので、これは完成したスクリプトです:
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPConnectAndLogin {
private static void showServerReply(FTPClient ftp) {
String[] replies = ftp.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com";
int port = 21;
String user = "username"
String pass = "password"
FTPClient ftp = new FTPClient
try {
ftp.connect(server, port)
showServerReply(ftp);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
}
}
最初に新しいFTPClient
を作成し、それをサーバーに接続し、 .connect(String server, int port)
と.login(String username, String password)
を使用してログインする.login(String username, String password)
。コードがサーバーに接続できない場合は、try / catchブロックを使用して接続してログインすることが重要です。また、接続とログインを試みるときにサーバから受け取ったメッセージをチェックして表示する関数を作成する必要があります。この関数を " showServerReply(FTPClient ftp)
"と呼びます。
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class FTPConnectAndLogin {
private static void showServerReply(FTPClient ftp) {
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("SERVER: " + aReply);
}
}
}
public static void main(String[] args) {
// SET THESE TO MATCH YOUR FTP SERVER //
String server = "www.server.com";
int port = 21;
String user = "username"
String pass = "password"
FTPClient ftp = new FTPClient
try {
ftp.connect(server, port)
showServerReply(ftp);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
System.out.println("Operation failed. Server reply code: " + replyCode);
return;
}
boolean success = ftp.login(user, pass);
showServerReply(ftp);
if (!success) {
System.out.println("Failed to log into the server");
return;
} else {
System.out.println("LOGGED IN SERVER");
}
} catch (IOException ex) {
System.out.println("Oops! Something went wrong.");
ex.printStackTrace();
}
}
}
その後、FTPサーバーをJavaスクリプトに接続してください。