Visual studio code 如何在Visual Studio代码中使用FileSystemProvider文件系统
我注意到新的FileSystemProviderAPI看起来很棒,但似乎有一种期望,即插件能够处理使用此接口创建的任何自定义文件系统中的文件 我尝试过使用节点的内置Visual studio code 如何在Visual Studio代码中使用FileSystemProvider文件系统,visual-studio-code,Visual Studio Code,我注意到新的FileSystemProviderAPI看起来很棒,但似乎有一种期望,即插件能够处理使用此接口创建的任何自定义文件系统中的文件 我尝试过使用节点的内置fs,但这不起作用,因为Uri中的路径与主机上的文件系统无关,而是与另一个扩展中定义的任意文件系统相关 我还尝试了以下方法(使用测试扩展): 但是,FileSystemProvider似乎并没有像我期望的那样暴露自己 插件如何利用这些任意文件系统可以拥有的自定义方案中的URI并对其执行文件操作?我遇到了同样的问题。事实证明,FileS
fs
,但这不起作用,因为Uri
中的路径与主机上的文件系统无关,而是与另一个扩展中定义的任意文件系统相关
我还尝试了以下方法(使用测试扩展):
但是,FileSystemProvider
似乎并没有像我期望的那样暴露自己
插件如何利用这些任意文件系统可以拥有的自定义方案中的URI并对其执行文件操作?我遇到了同样的问题。事实证明,
FileSystemProvider
是提供者应该实现的接口
有一个来自微软的很好的例子
关键是:
首先,他们创建了一个名为MemFS
的新类,该类实现了vscode.FileSystemProvider
然后他们这样注册:
const memFs = new MemFS();
context.subscriptions.push(
vscode.workspace.registerFileSystemProvider('memfs', memFs, {
isCaseSensitive: true
}));
registerFileSystemProvider
的第一个参数是scheme,这意味着无论何时使用以memfs://
开头的URI,都将使用文件系统提供程序
因此,您可以正常使用
fs
,方案确定实际使用的FileSystemProvider
。这很好,因为它确实可以让您清楚地知道正在处理的文件是在磁盘上、在世界另一端的某个服务器上,还是由提供商动态生成的。当您不告诉我们有关此“自定义文件系统”的任何信息时,这非常模糊。uri并不罕见,例如在Windows上,您会使用“file://c:\foo\bar\baz.ext”来引用c驱动器上的文件。不确定您的意思,Hans。如果有帮助的话,我在这里谈论的是VisualStudio代码。
const memFs = new MemFS();
context.subscriptions.push(
vscode.workspace.registerFileSystemProvider('memfs', memFs, {
isCaseSensitive: true
}));