应该使用什么Visual Studio Code扩展API来在Visual Studio Code工作区中添加文件夹和移



我想写一个扩展,将:

  • 读取当前工作区中的文件夹和文件
  • 通过创建新文件夹并将文件移动到其中来重新组织这些文件

所以我需要一个API来完成上面的工作。我不清楚是否应该使用

  • 标准fs节点模块,
  • 文件系统提供程序或
  • workspace命名空间

我在这里看到了答案,但是它没有说明在工作空间中使用什么来创建文件夹和移动文件。

如果您想从非本地存储(如FTP站点或远程设备中的虚拟文件系统)提供文件,并将它们作为存储目录呈现给Visual Studio Code,则使用FileSystemProviderFileSystemProvider是远端存储的视图/控制器。换句话说,你必须实现所有的文件操作操作沟通与远程存储。

如果你只想操作当前工作区中的文件,并且能够使用FileSystemProviders中的URI,你可以使用vscode.workspace.fs

你也可以使用Node.js的fs模块,但它只处理本地磁盘工作区(URI的file:方案)。我建议使用fs方法的同步版本。我在Visual Studio Code中使用异步fs方法时遇到了一些麻烦(当时我不知道vscode.workspace.fs)。

我找到了扩展。Microsoft提供的实现FileSystemProvider的示例代码。
下面的步骤可以帮助您了解如何创建一个新文件夹(createDirectory)并在工作区中移动文件(使用copy命令,将旧文件夹中的所有文件复制到新文件夹中,如果不希望文件保留在旧文件夹中,则使用delete命令)。

  1. FileSystemProvider的第一步是注册文件系统提供者registerFileSystemProvider:
const memFs = new MemFS();
context.subscriptions.push(
vscode.workspace.registerFileSystemProvider('memfs', memFs, {
isCaseSensitive: true
}));
  1. 下一步是注册命令registerCommand来执行你在FileSystemProvider中的操作,如readDirectory,readFile,createDirectory,copy,delete
context.subscriptions.push(
vscode.commands.registerCommand('memfs.init', _ =>
{
#TODO: add required functionalities
}));
  • 读取文件夹和读取文件
for (const [name] of memFs.readDirectory(vscode.Uri.parse('memfs:/'))) {
memFs.readFile(vscode.Uri.parse(`memfs:/${name}`));
}
  • 新建文件夹
memFs.createDirectory(vscode.Uri.parse(`memfs:/folder/`));
  • 移动文件到新建文件夹. 不幸的是,似乎没有一个单独的移动文件命令,但你可以使用复制命令复制到新文件夹,然后删除:

    copy(source: Uri, destination: Uri, options: {overwrite: boolean})

    删除

context.subscriptions.push(vscode.commands.registerCommand('memfs.reset', _ => {
for (const [name] of memFs.readDirectory(vscode.Uri.parse('memfs:/'))) {
memFs.delete(vscode.Uri.parse(`memfs:/${name}`));
}
}));

最新更新