1

メインフレーム FTP サーバーからファイルを取得しようとしていたため、この org.apache.commons.net.ftp.FTPClient メソッドを使用していました。

FTPClient ftpClient = ......
ftpClient.listFiles("path")

ディレクトリが「AAAA.BBBB.CCCC.DDDD」だったとしましょう:

ftpClient.changeWorkingDirectory("..");
FTPFile[] files = ftpClient.listFiles("AAAA.BBBB.CCCC.DDDD");

プリントアウトしたら

files.length

結果は 1 です。ファイルかフォルダーかに関係なく、結果は 1 のままです。理由を知りたいです。

フォルダー名とファイル名を使用した通常の非メインフレーム ftp でのテストは正常に機能しました。

知りたいこと:

メインフレームの ftp でディレクトリを正しくトラバーサルする方法。

4

2 に答える 2

1

私はごく最近、顧客のメインフレームでこの問題を調査していましたが、実際の解決策は、次の構成で DefaultFtpSessionFactory を最初に追加することでした:

<bean class="org.springframework.integration.ftp.session.DefaultFtpSessionFactory">
   <property name="host" value="???.???.???.???" />
   <property name="port" value="21" />
   <property name="username" value="ftp" />
   <property name="password" value="ftp" />
   <property name="config">
      <bean class="org.apache.commons.net.ftp.FTPClientConfig">
         <constructor-arg value="MVS" />
      </bean>
   </property>
</bean>

セッション オブジェクトで使用する filePattern は 'FILE.FILE.FILE.FILE.FILE.**' (一重引用符を含む) です。

ファイルのリストを取得するためのJavaコードは

Session<FTPFile> session = factory.getSession();
FTPFile[] files = session.list("'FILE.FILE.FILE.FILE.FILE.**'");
于 2013-12-30T03:41:54.567 に答える