ファイルコネクタを使用してファイルのリストを作成する方法

List 操作ではメッセージのリストが返されます。各メッセージは、ディレクトリパス (directoryPath) 内で見つかったファイルまたはフォルダを表します。

デフォルトでは、この操作は directoryPath のサブフォルダ内のファイルまたはフォルダを読み取ったり、それらのリストを作成したりしません。

サブフォルダ内のファイルまたはフォルダのリストを作成するには、recursive パラメータを true に設定できます。

この例では、directoryPath 内のすべてのメッセージのリストを作成します。ただし、サブフォルダの内容のリストは作成しません。パスには絶対パスを指定できます。また、ファイル設定 (workingDir) で設定した作業ディレクトリ (<file:config/>) を基準とする相対パスを指定することもできます。

<flow name="list">
  <file:list directoryPath="~/dropFolder" />
  <foreach>
    <choice>
      <when expression="#[attributes.directory]">
        <flow-ref name="processDirectory" />
      </when>
      <otherwise>
        <logger message="Found file #[attributes.path] which content is #[payload]" />
      </otherwise>
    </choice>
  </foreach>
</flow>

上の例では、フォルダの内容のリストを作成した後、For Each および Choice コンポーネントを使用して、リスト内の各ディレクトリを各ファイルとは異なる方法で処理します。

一致

<file:matcher> 要素を使用して、ファイルの受け入れまたは却下で使用する一致条件に基づいて、ファイルを絞り込むことができます。使用できるファイル一致ルールの例を次に示します。

例: ファイルマッチャー
<file:matcher
  filenamePattern="a?*.{htm,html,pdf}"
  path-pattern="a?*.{htm,html,pdf}"
  createdSince="2015-06-03T13:21:58+00:00"
  createdUntil="2015-07-03T13:21:58+00:00"
  updatedSince="2015-05-03T13:21:58+00:00"
  updatedUntil="2015-06-03T13:21:58+00:00"
  accessedSince="2015-06-03T13:21:58+00:00"
  accessedUntil="2015-06-03T13:21:58+00:00"
  directory="true|false"
  regularFile="true|false"
  symbolicLink="true|false"
  minSize="0"
  maxSize="1024" />

上記のすべての属性は省略可能であり、提供されていない場合は無視されます。これらはすべて AND 操作の下で相互に関連します。

以下の例で示すとおり、ファイルマッチャーは再利用可能な要素 (名前付きの最上位要素)、または特定のコンポーネント専用の内部要素として使用できます。

例: 最上位の再利用可能なマッチャー

<file:matcher name="smallFileMatcher" maxSize="100" />

<flow name="smallFiles">
  <file:list path="~/smallfiles" matcher="smallFileMatcher" />
  ...
</flow>

例: 内部の再利用できないマッチャー

<flow name="smallFiles">
	<file:list path="~/smallfiles">
        <file:matcher maxSize="100" />
	</file:list>
	...
</flow>

マッチャーの機能についての詳細は、ファイルコネクタドキュメントリファレンスを参照してください。

反復可能ストリーム

List 操作では、Mule 4 で導入された反復可能ストリーム機能が使用されます。この操作ではメッセージのリストが返されます。各メッセージはリスト内のファイルを表し、ファイルへのストリームを保持します。デフォルトでは、ストリームは反復可能です。

このトピックについての詳細は、Mule 4 でのストリーミングを参照してください。

Was this article helpful?

💙 Thanks for your feedback!