Muleでファイルを扱ってみる
今回からはMuleのファイル操作を扱っていきたいと思います。ファイル連携でローカルファイルやSFTPを扱うことも多いため、基本動作を覚えていきましょう。
今回使うコンポーネント
コンポーネント | アイコン・領域 | 用途 |
---|---|---|
List | ファイル・フォルダの一覧を表示する |
ファイル操作にはFileコンポーネントを使用する
今回のファイル操作を行うにあたり、File Connectorを使用します。File ConnectorはMule PaletteにモジュールにFileというモジュールを追加することによって使用可能です。追加されていなければAdd Moduleから追加するようにしましょう。
File Connectorはローカルにマウントされたファイルシステムのファイルとフォルダーを管理するモジュールです。「ローカルにマウントされた」とあるため、デプロイした環境によって、挙動が異なることになります。
実際にファイルリストを取得してみる
早速File Connectorを動かしてみます。Listコンポーネントをフロー配置してみましょう。使い方はシンプルで、Listコンポーネントを任意の場所に配置して、ファイル一覧を表示したいディレクトリをDirectory Pathに設定すればOKです。
出力がバイナリ型のため、一覧を可視化したい場合は、Transform Message等を使用して、JSONなどに変換してあげましょう。
実際に実行すると、以下のような形式でファイルとフォルダの一覧が返却されます(一部省略・日時などはマスク)。
[
{
"inboundAttachmentNames": [
],
"exceptionPayload": null,
"inboundPropertyNames": [
],
"outboundAttachmentNames": [
],
"outboundPropertyNames": [
],
"payload": null,
"attributes": {
"fileName": "home",
"lastModifiedTime": "2024-XX-XXTXX:XX:XX",
"lastAccessTime": "2024-XX-XXTXX:XX:XX",
"creationTime": "1970-01-01T09:00:00",
"symbolicLink": true,
"regularFile": false,
"directory": true,
"path": "/home",
"size": 1,
"name": "home"
}
},
(中略)
]
上の結果から分かるように、attributesにファイルやフォルダのプロパティ情報が含まれているので、そこで欲しい情報を拾ってもらうような形になります。payloadにはファイルであれば、ファイルの内容が表示されます。
細かい所はオプションで設定可能
デフォルトの状態では、指定されたディレクトリに含まれるファイルとフォルダのリストを出力しますが、コネクタの設定によって細かい検索の指定が可能です。
File Matching Rulesを「None」以外に指定することで、細かい検索ルールの設定が可能です。Edit Inlineにした時によく使用する設定は以下の通りです。
パラメーター | 説明 |
---|---|
Recursive | Trueにすると、サブディレクトリを含めて一覧表示する(時間かかります) |
Created Since | 日時を指定し、指定した日時以前に作成されたファイル・フォルダは除外する |
Updated Since | 日時を指定し、指定した日時以前に更新されたファイル・フォルダは除外する |
Directories | INCLUDE…フォルダを含める EXCLUDE…フォルダを含めない |
Regular Files | INCLUDE…ファイルを含める EXCLUDE…ファイルを含めない |
よく使いそうなものを列挙しました。その他にも細かいオプションがありますので、リファレンスのMatcherを参照して下さい。
最後に
ファイル操作についてはFile Connectorで様々な操作を使用することができます。このFile ConnectorはSFTP Connnectorを使う際のベースとなっていることが多いため、SFTPを扱う場合でもこちらのFile Connectorの設定を覚えておけばある程度扱えるのではないかと思います。
コメント