使用vs code扩展程序读写文件

23

我正在开发一个用于解析JSON数据的VS Code扩展程序。

我的需求是,它应该能够从特定文件夹中加载.json文件并迭代文件内容。然后,它应该允许用户选择其中的一些键,并将其组合成一个新的JSON文件,并将其保存在任意文件夹中。

但是我找不到在"VS Code扩展程序"中读写文件的方法。请问有人可以帮助我吗?

4个回答

28
如果你想读取文件的当前编辑状态,你可以使用以下 API 的 workspace 函数:
vscode.workspace.openTextDocument(uri).then((document) => {
  let text = document.getText();
});

这将显示文件的当前状态,包括未持久化的更改。 document 是类型为TextDocument的对象,并且如果它有待处理的更改,则isDirty设置为true


7

由于扩展程序在nodejs中运行,因此您应该能够以通常的方式使用任何内置或通过npm安装的nodejs模块。

对于您的目的,您可以使用内置的fs模块:https://nodejs.org/dist/latest-v6.x/docs/api/fs.html

在您的扩展程序中,您需要导入所需的模块,因此您的代码文件应包含以下内容:

let fs = require("fs");

然后以通常的方式使用方法,例如:fs.fileReadSync( filename, encoding )...

请注意,有一个例外情况。如果您安装了一个包含编译的二进制代码的nodejs模块,则它将无法在扩展中运行,而是会看到一个错误消息,例如%1不是有效的Win32应用程序。纯javascript模块可以正常工作。


5

VSCode扩展程序是运行在node.js中的。因此,您可以在扩展程序中使用任何可用的node.js包/模块。例如,请查看读取JSON的问题


1
对于JSON,您只需要 requireimport JSON文件,例如:
const jsonObject = require('./myJSONfile.json');
// do something

如果需要带有注释的JSON,可以使用node-jsonc-parser

操作完成后,您可以使用node.js的fs模块将其写入磁盘。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接