Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code 如何在Visual Studio代码中使用FileSystemProvider文件系统_Visual Studio Code - Fatal编程技术网

Visual studio code 如何在Visual Studio代码中使用FileSystemProvider文件系统

Visual studio code 如何在Visual Studio代码中使用FileSystemProvider文件系统,visual-studio-code,Visual Studio Code,我注意到新的FileSystemProviderAPI看起来很棒,但似乎有一种期望,即插件能够处理使用此接口创建的任何自定义文件系统中的文件 我尝试过使用节点的内置fs,但这不起作用,因为Uri中的路径与主机上的文件系统无关,而是与另一个扩展中定义的任意文件系统相关 我还尝试了以下方法(使用测试扩展): 但是,FileSystemProvider似乎并没有像我期望的那样暴露自己 插件如何利用这些任意文件系统可以拥有的自定义方案中的URI并对其执行文件操作?我遇到了同样的问题。事实证明,FileS

我注意到新的FileSystemProviderAPI看起来很棒,但似乎有一种期望,即插件能够处理使用此接口创建的任何自定义文件系统中的文件

我尝试过使用节点的内置
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 
  }));