web-dev-qa-db-ja.com

vsコード拡張を使用したファイルの読み取りと書き込み

vscode拡張機能を使用してjsonを解析する拡張機能を構築しています。したがって、私の必要性は、特定のフォルダーから.jsonファイルをロードし、ファイルのコンテンツを反復処理できる必要があることです。次に、ユーザーがそこからいくつかのキーを選択できるようにして、これから新しいjsonファイルを作成し、任意のフォルダーに保存できるようにする必要があります。

しかし、「vscodeextension」でファイルを読み書きする方法を見つけることができません。誰かが私を助けてくれませんか。

11
user6639252

ファイルの現在の編集状態を読み取りたい場合は、次のAPIを使用できます workspace 関数:

vscode.workspace.openTextDocument(uri).then((document) => {
  let text = document.getText();
});

これにより、永続化されていない変更を含むファイルの現在の状態が表示されます。 documentのタイプは TextDocument であり、保留中の変更がある場合はisDirtytrueに設定します。

14
Steffen

拡張機能はnodejsで実行されるため、npmによって組み込まれているまたはインストールされているnodejsモジュールを通常の方法で使用できるはずです。

あなたの目的のために、あなたは組み込みのfsモジュールで大丈夫です: https://nodejs.org/dist/latest-v6 .x/docs/api/fs.html

拡張機能では、必要なモジュールをインポートする必要があるため、コードファイルには次のものが含まれている必要があります。

_let fs = require("fs");
_

次に、通常の方法でメソッドを使用します。 fs.fileReadSync( filename, encoding ) ...

例外が1つあることに注意してください。コンパイルされたバイナリコードを含むnodejsモジュールをインストールすると、拡張機能では実行されず、代わりに%1のようなものが有効なWin32アプリケーションではないというエラーメッセージが表示されます。ただし、純粋なjavascriptモジュールは問題ありません。

3

VSCode拡張機能はnode.jsで実行されています。したがって、拡張機能内で利用可能なnode.jsパッケージ/モジュールを使用できます。たとえば、 JSONを読むためのこの質問 をチェックしてください。

3
seairth

JSONの場合、次のようなJSONファイルをrequireまたはimportする必要があります。

const jsonObject = require('./myJSONfile.json');
// do something

コメント付きのJSONの場合、 node-jsonc-parser を使用できます。

操作後、nodej.jsのfsモジュールを使用してディスクに書き込むことができます。

0
Nonoroazoro