使用 vs 代码扩展读写文件
Posted
技术标签:
【中文标题】使用 vs 代码扩展读写文件【英文标题】:Read and Write file using vs code extension 【发布时间】:2016-12-11 10:52:11 【问题描述】:我正在构建一个扩展来使用 vs 代码扩展来解析 json。 所以我的需要是,它应该能够从特定文件夹加载 .json 文件并遍历文件的内容。 然后它应该允许用户从中选择几个键,从中创建一个新的 json 文件并将其保存在任何文件夹中。
但我无法找到任何方式来读取和写入“vs 代码扩展”中的文件。有人可以帮帮我吗。
【问题讨论】:
【参考方案1】:如果要读取文件的当前编辑状态,可以使用以下 API workspace 函数:
vscode.workspace.openTextDocument(uri).then((document) =>
let text = document.getText();
);
这将显示文件的当前状态,包括未持久的更改。 document
的类型为 TextDocument
,如果有待处理的更改,则将 isDirty
设置为 true
。
【讨论】:
【参考方案2】:由于扩展在 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 模块是好吧,不过。
【讨论】:
【参考方案3】:VSCode 扩展在 node.js 中运行。因此,您可以在扩展中使用任何可用的 node.js 包/模块。例如,查看this question for reading JSON。
【讨论】:
【参考方案4】:对于JSON,你只需要require
或者import
这个JSON文件,比如:
const jsonObject = require('./myJSONfile.json');
// do something
对于带有 cmets 的 JSON,您可以使用 node-jsonc-parser。
操作完成后,可以使用nodej.js的fs
模块写入磁盘。
【讨论】:
以上是关于使用 vs 代码扩展读写文件的主要内容,如果未能解决你的问题,请参考以下文章