サーチ…


構文

  • 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スクリプトに接続してください。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow