2012-04-23 22 views
0

ファイルをFTPサーバーにアップロードするためのスタンドアロンプ​​ログラムを作成しました。コードは正常に実行されますが、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を返します。何が問題なの?

+2

getReplyCode()メソッドを使用して、ftpの正確なftpエラーコードを取得します。それから、原因を調べることができます。 – Aslan986

答えて

2

私はあなたにFTPClient documentationを引用してみましょう:

FTPClient内のすべてのFTPコマンド方式のための規則は、彼らがブール値または他の値を返すのいずれかのようなものです。 booleanメソッドは、FTPサーバーからの正常終了応答に対してtrueを返し、エラー状態または失敗につながる応答に対してfalseを返します。 boolean以外の値を返すメソッドは、FTPコマンドで生成された上位レベルのデータを含む値を返します。返信によってエラーが発生した場合はnullが返されます。成功または失敗を引き起こす正確なFTP応答コードにアクセスする場合は、成功または失敗後にgetReplyCodeを呼び出す必要があります。

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

+0

「Connected Success」というメッセージがコンソールに表示されるので、返信コードが正しいと思います。 –

+0

はい、storeFile()呼び出しの後にgetReplyCode()が返すものを確認してください。 – maksimov

+0

storeFile()が呼び出される前の返信コードは230で、storeFileの後には500です。 –

関連する問題