2010-12-31 13 views
1

FTPを使用してメインフレームサーバーにファイルをアップロードしようとしています。私のコードは、コードが、私は、デバッグすることができませんclient.storeFile("FILE.TXT", in); に打たれますJava、Apache Common Netを使用してメインフレームにファイルをFTPで送信

FTPClient client = new FTPClient(); 
InputStream in = null; 
FileInputStream fis = null; 
try { 
    client.connect("10.10.23.23"); 
    client.login("user1", "pass123"); 
    client.setFileType(FTPClient.BINARY_FILE_TYPE); 
    int reply ; 
    reply = client.getReplyCode(); 

    System.out.println("Reply Code:"+reply); 

    if(FTPReply.isPositiveCompletion(reply)){    
     System.out.println("Positive reply"); 
     String filename ="D:\\FILE.txt"; 

     in = new FileInputStream(filename); 
     client.storeFile("FILE.TXT", in); 
     client.logout(); 
     fis.close();   
    } else { 
     System.out.println("Negative reply"); 
    } 
} catch(final Throwable t){ 
     t.printStackTrace(); 
} 

を下回っています。方法や解決策を提案してください。

+0

あなたはfis.close()をやっています。初期化されていないオブジェクト上にあり、マシン上でNPEが発生します。 – Lukasz

+0

おそらくstoreFileの戻り値をチェックして閉じてください。 – extraneon

+0

どのような種類のメインフレームですか? EBCDICを使用していますか? 「直接サポートされている唯一のファイルタイプはFTP.ASCII_FILE_TYPEとFTP.BINARY_FILE_TYPEです。少なくとも4つの異なるEBCDICエンコーディングがあるため、EBCDICを直接サポートしないことを選択しました。独自のフィルタInputStreamsとOutputStreamを作成し、FTPClientメソッドによって返されるストリームまたは必要なストリームの周りにラップする必要があります。 http://commons.apache.org/net/api/org/apache/commons/net/ftp/FTPClient.html – Lukasz

答えて

1

最初に、ルーカスはフィスがヌルだと言っていますが、私には他の質問がたくさんあります。 FTPClientとは何ですか?そのクラスにはstore()メソッドがないため、sun.net.ftp.FtpClientではありません。他に考慮する必要があるのは、メインフレームにログインすることです。最初にログインしなくてもメインフレームからファイルを取得することはできません。考慮すべき事項はたくさんありますが、そこから始めることができます。

+0

FTPclientはApacheのコモンズクライアントです。[link](http://commons.apache.org/ net/apidocs/org/apache/commons/net/ftp/FTPClient.html) –

1

ファイルをアップロードする前に特定のディレクトリに変更されていないようです。メインフレーム上のディレクトリを変更する方法は2通りあります。 PDSにアップロードする必要がある場合は、Windowsのftpクライアントで以下のようなコマンドを実行します。

cd USERID.DATASET.PREFIX 

ファイルをUSSサブシステムにアップロードする必要がある場合は、次のようなコマンドを実行します。

cd '/direone/dirtwo' 
1

あなたはuser1にftpへのアクセス権があることを確認しましたか?非常にきめ細かいレベルでそれらを与えることができるので、あなたはファイルを提出し、ジョブを提出できますが、ファイルを置くことはできません。
あなたのSENDの直後に死ぬという事実は、それが良い候補かもしれません。私はRACF/ACF2 /あなたが持っているセキュリティ製品の人に電話をして尋ねます。

0
  1. 最初の()メソッド
  2. は今storeFileの最初のパラメータとして上記の文字列を入れて、単一引用符で囲んでトリミングした後、結果のファイル名を囲み、ファイル名からファイル拡張子を削除
関連する問題