---
schema_version: "1"
id: 3d317f33611a7cafad32a26c3ade82ef30b9cf70efa191bfede64b8c296f7307
title: アーカイブと抽出の例
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/compression-module/latest/compression-module-archive-extract-example.md
canonical_url: https://docs.mulesoft.com/jp/compression-module/latest/compression-module-archive-extract-example
source_site: docs.mulesoft.com
content_type: documentation
content_hash: c8d462da420f61fe812c1ea917c4331ea57412fdfb6385e9382a12d2222c2c4b
description: MuleSoft Documentation Site
release: "2.2"
latest: true
---
# アーカイブと抽出の例

次の Compression Module の例は、フォルダーとの間でファイルのアーカイブと抽出を行う方法を示しています。File Connector の ​**List**​ 操作で、​`input`​ という名前のフォルダーからすべてのファイルをリストします。次に ​**Compress**​ 操作で、キーをファイル名に設定し、値をリストされたファイルの値に設定してオブジェクトを生成し、圧縮されたアーカイブを作成します。 その後、​**Extract**​ 操作で、アーカイブされたファイルを圧縮解除します。次に、​**ForEach**​ スコープで、抽出された各キー/値ペアを反復処理し、キーをファイル名、値を対応する抽出されたファイルコンテンツとして、ファイルを新しい出力フォルダーに書き込みます。

1. Studio で ​**\[Scheduler\]**​ トリガーをフローにドラッグします。
2. **\[Frequency (頻度)\]**​ を ​`15`​ に設定し、​**\[Time unit (時間単位)\]**​ を ​`SECONDS`​ に設定します。
3. **\[List\]**​ 操作を ​**\[Scheduler\]**​ トリガーの横にドラッグします。
4. コネクタ設定を追加します。
5. **\[Directory path (ディレクトリパス)\]**​ を ​`input`​ に設定します。
6. **\[Set Payload\]**​ コンポーネントを ​**\[List\]**​ 操作の右にドラッグします。
7. **\[Value (値)\]**​ を次の DataWeave 式に設定します。

```dataweave
output application/java
---
(0 to sizeOf(payload) - 1) as Array
reduce (index, acc={}) -&gt;
acc ++ { (payload[index].attributes.fileName): payload[index].payload}
```

1. **\[Archive\]**​ 操作を ​**\[Set payload\]**​ コンポーネントの横にドラッグします。
2. **\[Extract\]**​ 操作を ​**\[Archive\]**​ 操作の横にドラッグします。
3. **For Each**​ スコープをドラッグします。
4. **\[Collection (コレクション)\]**​ を ​`payload`​ に設定します。
5. **\[Write\]**​ 操作を ​**For Each**​ スコープにドラッグします。
6. **\[Path (パス)\]**​ を ​`#[output application/json--- "output/" ++ (payload pluck $$)[0]]`​ に設定します。
7. **\[Content (コンテンツ)\]**​ を ​`[CDATA[#[output application/java --- ( payload pluck $ )[0]]]`​ に設定します。
8. **\[Logger\]**​ コンポーネントを ​**For Each**​ スコープの右にドラッグします。
9. **\[Message (メッセージ)\]**​ を ​`output application/json --- payload`​ に設定します。
10. Mule アプリケーションを保存して実行します。

![Studio Canvas での Compression Module のアーカイブ抽出フロー](/mulesoft/current/ja-jp/compression-module/latest/_images/compression-module-example-1.png)

**設定 XML**​ エディターでは、設定は次のように記述されます。

```xml
  <flow name="archive-extract-test" >
	<scheduler doc:name="Scheduler">
		<scheduling-strategy >
			<fixed-frequency frequency="15" timeUnit="SECONDS"/>
		</scheduling-strategy>
	</scheduler>
	<file:list doc:name="List" config-ref="File_Config" directoryPath="input"/>
	<set-payload value='#[output application/java
---
(0 to sizeOf(payload) - 1) as Array
reduce (index, acc={}) -&gt;
acc ++ { (payload[index].attributes.fileName): payload[index].payload}]' doc:name="Set Payload" />

	<compression:archive doc:name="Archive" >
		<compression:archiver>
			<compression:zip-archiver />
		</compression:archiver>
	</compression:archive>

	<compression:extract doc:name="Extract"  >
		<compression:extractor >
			<compression:zip-extractor />
		</compression:extractor>
	</compression:extract>

	<foreach doc:name="For Each" collection="#[dw::Core::entriesOf(payload)]">
        <file:write doc:name="Write" config-ref="File_Config" path='#[output application/json&#10;---&#10;"output/" ++ payload.key]'>
            <file:content><![CDATA[#[output application/java --- payload.value]]]></file:content>
        </file:write>
    </foreach>

	<logger level="INFO" doc:name="Logger" message="#[output application/json --- payload]"/>
  </flow>
</mule>
```

## [](#関連情報)関連情報

- [Compression Module リファレンス](https://docs.mulesoft.com/jp/compression-module/latest/compression-documentation)
- [MuleSoft ヘルプセンター](https://help.mulesoft.com)