107.17. 固定名を使用した単一ファイルの使用
単一ファイルをダウンロードし、ファイル名を認識したい場合は、fileName=myFileName.txt
を使用して Camel にダウンロードするファイルの名前を指示できます。デフォルトでは、コンシューマーは FTP LIST コマンドを実行し、ディレクトリーの一覧を実行して fileName
オプションに基づいてこれらのファイルをフィルタリングします。このユースケースでは、useList=false
を設定してディレクトリーの一覧をオフにすることが推奨されます。たとえば、FTP サーバーへのログインに使用されるユーザーアカウントには、FTP LIST コマンドを実行するパーミッションがない可能性があります。そのため、useList=false
を使用してこれをオフにしてから、fileName=myFileName.txt
でダウンロードするファイルの固定名を指定してから、FTP コンシューマーはファイルをダウンロードできます。何らかの理由でファイルが存在しない場合、Camel はデフォルトで例外をスローします。これをオフにして ignoreFileNotFoundOrPermissionError=true
を設定して無視できます。
たとえば、1 つのファイルを取得し、使用後に削除する Camel ルートがあるとします。
from("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true") .to("activemq:queue:report");
from("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true")
.to("activemq:queue:report");
上記で説明したすべてのオプションを使用していることに注意してください。
これは ConsumerTemplate
とともに使用することもできます。たとえば、単一ファイル(存在する場合)をダウンロードし、ファイルの内容を String タイプとして取得するには、以下を実行します。
String data = template.retrieveBodyNoWait("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true", String.class);
String data = template.retrieveBodyNoWait("ftp://admin@localhost:21/nolist/?password=admin&stepwise=false&useList=false&ignoreFileNotFoundOrPermissionError=true&fileName=report.txt&delete=true", String.class);