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

元々の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) を参照してください。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.eagle.cool/plugin-api/ja-jp/tutorial/access-local-files.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
