---
schema_version: "1"
id: 0fa8bc286fef71b42218b714629e527a814c54db2f8d327cef48d388cf1cea19
title: File Connector を使用したファイルの読み取り
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/file-connector/1.3/file-read.md
canonical_url: https://docs.mulesoft.com/jp/file-connector/1.3/file-read
source_site: docs.mulesoft.com
content_type: documentation
content_hash: c5024501899af44e906110dd11a4541150805938d83f8750f79546a975b421b6
description: MuleSoft Documentation Site
release: "1.3"
latest: false
---
# File Connector を使用したファイルの読み取り

ファイル用 Anypoint Connector (File Connector) を使用すると、トランスポートは Mule 3 実装でのインバウンドエンドポイントポーリングの結果としてのみでなく、フローの任意の時点でファイルを読み取ることができます。

`Read`​ 操作で必須のパラメーターは、読み取られるファイルへのパスのみです。パスには、ファイルへのフルパスまたは相対パスを指定できます。パスは、​`config-ref`​ パラメーターによって参照される設定で定義された作業ディレクトリの値を使用します。Anypoint Studio では、​**\[File path (ファイルパス)\]**​ 項目でパスを設定できます。XML では、​`<file:read`​ ステートメントで ​**path**​ 属性を使用してパスを指定します。

設定が参照されていない場合、作業ディレクトリはデフォルトで ​`user.home`​ システムプロパティの値に設定されます。システムプロパティが設定されていない場合、コネクタは初期化に失敗します。

次の例は、ファイル設定と相対パスを使用してファイルを読み取ります。

```xml
<file:read config-ref="File_Config" path="relativePath"/>
```

次の例は、フルパスを使用してファイルを読み取ります。

```xml
<file:read path="fullPath"/>
```

Studio では、参照ボタン (…​) をクリックして次のようなファイルを見つけます。  
`/Users/me/myfile`

XML では、​**path**​ 属性を使用して次のようなファイルへのパスを指定します。  
`<file:read path="/Users/me/myfile" />`

## [](#返される情報)返される情報

`Read`​ 操作は、次の情報を含むメッセージを返します。

- ペイロードとしてのファイルのコンテンツ
- メッセージ属性のファイルのメタデータ、メッセージ属性のメタデータ (名前、作成時間、サイズなど)。

ファイルが存在しない場合、​`Read`​ 操作は ​`FILE:ILLEGAL_PATH`​ エラーをスローします。この操作では、ディレクトリを読み取りません。

<table>
<tbody><tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p><code>Read</code>​ 操作は (non-void 値を返す他の操作と同様)、対象パラメーターをサポートしています。
<a href="https://docs.mulesoft.com/mule-runtime/latest/target-variables" class="xref page">「Mule 対象変数」</a>​を参照してください。</p>
</div>
</td>
</tr>
</tbody></table>

## [](#相対パスの設定)相対パスの設定

同じ Mule アプリケーションで多数の ​`Read`​ 操作 (またはその他のファイル操作) がパスの一部を共有している場合、ベースパスを​[ファイル設定](https://docs.mulesoft.com/jp/file-connector/1.3/#connection_settings)​に抽出して容易に再利用できます。

たとえば、フルパスが ​`/Users/Documents/Examples/manual.txt`​ と ​`/Users/Documents/Examples/readme.txt`​ の 2 つのファイルにアクセスするには、次のように設定でパスの同じ部分を定義します。

```xml
<file:config name="File_Config" >
    <file:connection workingDir="/Users/Documents/Examples" />
</file:config>
```

この設定を参照する ​`Read`​ 操作は次のようになります。

```xml
<flow>
    <file:read config-ref="File_Config" path="manual.txt" />
    <file:read config-ref="File_Config" path="readme.txt" />
</flow>
```

## [](#mime-タイプおよび文字コード)MIME タイプおよび文字コード

各コネクタはファイルの MIME タイプをその拡張子から判別しようとします。​**MIME Type (MIME タイプ)**​ (​`outputMimeType`​) パラメーターを使用して強制的に MIME タイプを別の値に変更できます。

同じプロセスが文字コードでも機能します。デフォルトでは、コネクタは、Mule Runtime のデフォルトの文字コードがファイルの MIME タイプに一致するものとみなします。ただし、文字コードは ​**Encoding (エンコード)**​ (​`outputEncoding`​) パラメーターで設定できます。

## [](#mime-タイプが重要な理由)MIME タイプが重要な理由

ペイロードと他の値を生成する操作内に DataWeave 式を埋め込むことができます。適切な MIME タイプを設定することで、DataWeave は型を自動で割り当てることができるほか、適切な出力を生成できます。また、DataSense の機能を最大限活用することで、ユーザーエクスペリエンスが向上します。

## [](#mule-アプリケーションで定義されてファイルへのアクセス)Mule アプリケーションで定義されてファイルへのアクセス

Mule アプリケーションの開発中、フォルダーとファイルを ​`resources`​ フォルダーに保存できます。アプリケーションがデプロイされると、それらのフォルダーとファイルは ​`${app.home}`​ プロパティで定義されたディレクトリにコピーされます。

たとえば、​`resources`​ フォルダー内に ​`MyFiles`​ という名前のフォルダーを定義し、​`MyFiles`​ フォルダー内に ​`Example.txt`​ という名前のファイルを定義する場合、次のプロジェクト構造を使用します。

![project resources](/mulesoft/current/ja-jp/file-connector/1.3/_images/project-resources.png)

ランタイムでは、ファイルにアクセスするパスは ​`${app.home}/MyFiles/Example.txt`​ です。

ファイルを読み取るには、次の設定を定義します。

```xml
<file:config name="File_Config" >
    <file:connection workingDir="${app.home}" />
</file:config>
```

`Read`​ 操作を次のように設定します。

```xml
<file:read config-ref="File_Config" path="MyFiles/Example.txt" />
```

<table><tbody><tr><td class="icon"><i class="fa icon-warning" title="Warning"></i></td><td class="content">前述のように、アプリケーションがデプロイされるたびに、​<code>src/main/resources</code>​ フォルダーの内容は ​<code>${app.home}</code>​ ディレクトリにコピーされ、実行中にこれらのファイルに加えられた変更は、アプリケーションが停止または再デプロイされると失われます。そのため、アプリケーションの実行中に読み取る必要があるファイルのみを ​<code>resource</code>​ フォルダーに置くことをお勧めします。</td></tr></tbody></table>

## [](#ファイルロック)ファイルロック

`lock`​ パラメーターを ​`true`​ に設定することで、ファイルの読み取り中に他のプロセスがそのファイルにアクセスするのを防ぐことができます。ただし、これはホストのファイルシステムにより提供されるため、ロックの動作は、マウントされたドライブと、Mule が実行されているオペレーティングシステムに応じて変わる可能性があります。このロックに依存する前に以上の点を考慮してください。

ファイルが他のユーザーによりすでにロックされている場合、コネクタはファイルをロックできず、操作で ​`FILE:FILE_LOCK`​ エラーがスローされます。

次のいずれかの状況が発生した場合、ロックは自動的にリリースされます。

- ファイルをロックしていた Mule フローが終了した。
- ファイルのコンテンツが完全に読み取られた。

次に、ロックの例を示します。

```xml
<file:read config-ref="File_Config" path="relativePath" lock="true" />
```

## [](#出力-mime-タイプおよびエンコードの変更)出力 MIME タイプおよびエンコードの変更

`outputEncoding`​ および ​`outputMimeType`​ パラメーターを使用して、​`Read`​ 操作が出力する MIME タイプまたはエンコードを変更できます。これはファイルのコンテンツは変換せず、MIME タイプまたはエンコード情報を上書きするだけです。次に例を示します。

```xml
<file:read config-ref="File_Config" path="relativePath"
    outputEncoding="UTF-8"
    outputMimeType="application/csv; headers=false" />
```

## [](#time-between-size-checks-サイズ確認の時間間隔-パラメーター)Time Between Size Checks (サイズ確認の時間間隔) パラメーター

`Read`​ 操作で返されるファイルのコンテンツを読み取り、ファイルがまだ書き込み中であるか不明な場合は、​`TimeBetweenSizeChecks`​ パラメーターを使用できます。このパラメーターは、​`TimeBetweenSizeCheckUnit`​ パラメーターと連携します。この 2 つのパラメーターの組み合わせで、2 つのサイズ確認が実行されます。

- 1 つは、ストリームがコンシュームされるポイントにフローが到達したとき。​`Read`​ はファイルのコンテンツを参照する遅延ストリームを返すため、​`Read`​ 操作では時間の確認は行われません。そのため、ストリームがコンシュームされるときにのみサイズ確認を行うことが理にかなっています。
- もう 1 つの確認は、​`TimeBetweenSizeChecks`​ および ​`TimeBetweenSizeCheckUnit`​ パラメーターで設定された待機時間後に実行。

この両方のサイズ確認で同じファイルサイズが返された場合、ストリームは正常にコンシュームされています。2 つのサイズ確認で異なるファイルサイズが返された場合、ファイルはまだ書き込み中であるため、ストリームはコンシュームされず、操作はエラーで失敗します。

サイズ確認パラメーターを含む ​`Read`​ 操作を使用して、​[Logger コンポーネント](https://docs.mulesoft.com/mule-runtime/latest/logger-component-reference)​で出力ストリームをコンシュームできます。

```xml
<file:read config-ref="File_Config"
	path="filePath"
	timeBetweenSizeCheck="15"
	timeBetweenSizeCheckUnit="SECONDS">
	<logger level="INFO" message="#[payload]"/>
</file:read>
```

15 秒の確認は、​`Read`​ 操作時ではなく ​`logger`​ コンポーネントの実行時に行われます。

## [](#反復可能ストリーム)反復可能ストリーム

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

詳細は、​[「Mule 4 でのストリーミング」](https://docs.mulesoft.com/mule-runtime/latest/streaming-about)​を参照してください。