0

FTPサーバーにファイルをアップロードするためのスタンドアロンプ​​ログラムを作成しました。コードは正常に実行されますが、FTPでファイルが見つかりません。これがコードです

import java.io.FileInputStream;
import java.io.IOException;
import java.net.SocketException;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;


public class FTPDemo {

    public static void main(String[] args) {

        FTPClient ftp = new FTPClient();
        int reply;

        try {

            ftp.connect("ip address");
            ftp.login("username","password");
            reply = ftp.getReplyCode();

            if(FTPReply.isPositiveCompletion(reply)){
                System.out.println("Connected Success");
            }else {
                System.out.println("Connection Failed");
                ftp.disconnect();
            }

            FileInputStream fis = null;
            String filename = "demo.txt";
            fis = new FileInputStream("C:\\demo.txt");
            System.out.println("Is file stored: "+ftp.storeFile(filename,fis));
            fis.close();
            ftp.disconnect();
        } catch (SocketException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }

    }
}

保存されているファイルはfalseを返します。何が問題なのか?

4

1 に答える 1

2

FTPClientのドキュメントを引用させてください:

FTPClient のすべての FTP コマンド メソッドの規約では、ブール値またはその他の値を返します。ブール値のメソッドは、FTP サーバーからの応答が正常に完了した場合に true を返し、エラー状態または失敗に終わった応答の場合に false を返します。ブール値以外の値を返すメソッドは、FTP コマンドによって生成された高レベルのデータを含む値を返すか、応答がエラー状態または失敗の場合は null を返します。成功または失敗の原因となった正確な FTP 応答コードにアクセスする場合は、成功または失敗の後に getReplyCode を呼び出す必要があります。

つまり、失敗の実際の理由を理解するには、電話ftp.getReplyCode()してそこから作業する必要があります。

于 2012-04-23T11:52:53.310 に答える