> For the complete documentation index, see [llms.txt](https://developer.eagle.cool/plugin-api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.eagle.cool/plugin-api/ja-jp/tutorial/access-local-files.md).

# ローカルファイルへのアクセス

元々のNode.js APIを使ってラクにローカルファイルへアクセスする機能が実現できます。これにより、プラグインシステムでこのようなタスクを実行しやすくなります。

***

## `fs`モジュールを使ってローカルファイルにアクセスする <a href="#iamlo" id="iamlo"></a>

Node.js の `fs` のいくつかの方法を利用して、ローカルファイルのアクセスとローカルファイルシステムの操作が実現できます。例えば、`fs.readFile()` メソッドを使ってファイルの内容を読み込むことができたり、`fs.writeFile()` メソッドを使ってファイルに書き込むことができます。以下に例を示します。

```javascript
const fs = require('fs');

// ファイルを読み込む
fs.readFile('/path/to/file', (err, data) => {
  if (err) throw err;

  console.log(data);
});

// ファイルに書き込む
fs.writeFile('/path/to/file', 'hello world', (err) => {
  if (err) throw err;

  console.log('done');
});
```

これらのメソッドは非同期であり、UI をブロックしないため、アプリケーションの高いパフォーマンスが保証されます。また、`fs` モジュールには他にもいくつか便利なメソッドが提供されています。例えば、`fs.stat()` メソッドを使ってファイルのサイズや作成日時などの情報を取得したり、`fs.rename()` メソッドを使ってファイル名を変更することができます。`fs` モジュールを使用することで、ローカルファイルへのアクセスが簡単になります。

{% hint style="success" %}
**🦄 ベストプラクティス：** Node.js の sync メソッドはできるだけ使用しないでください。これらのメソッドは UI スレッドをブロックし、ユーザーインターフェースが遅れるため、ユーザーエクスペリエンスが大幅に低下します。また、非同期メソッドを使用することで、プログラムの実行効率が向上し、複数のタスクを同時に処理できるため、プログラムの実行がブロックされません。
{% endhint %}

***

## ネイティブダイアログでファイルパスを取得する <a href="#nyq1o" id="nyq1o"></a>

Eagle Plugin API は、`dialog` モジュールを提供し、ネイティブシステムダイアログを作成してファイルの保存や選択ができます。以下にいくつかの例を示します。

**例1：ファイル選択ダイアログを表示する**

```javascript
let result = await eagle.dialog.showOpenDialog({
    properties: ['openFile', 'openDirectory']
});
```

**例2：保存ダイアログを表示する**

```javascript
let result = await eagle.dialog.showSaveDialog({
    properties: ['openDirectory']
});
```

詳細な説明が必要な場合は、[dialog モジュール](/plugin-api/ja-jp/api/dialog.md) を参照してください。
