使用 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 代码扩展读写文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用nodejs读写excel文件

vs2012 Office2013 读写excel文件

vs2012简单读写EXCEL文件(OLE)

使用C/C++读写.mat文件(Clion)

使用C/C++读写.mat文件(Clion)

使用C/C++读写.mat文件(Clion)