Как работать с файловыми системами FileSystemProvider в Visual Studio Code - PullRequest
0 голосов
/ 06 мая 2018

Я заметил новый API FileSystemProvider, который выглядит великолепно, но кажется, что плагины могут обрабатывать файлы в любой пользовательской файловой системе, созданной с использованием этого интерфейса.

Я попытался использовать встроенный в узел fs, который не будет работать, потому что путь в Uri относится не к файловой системе на хост-машине, а к произвольной файловой системе, определенной в другом расширении. .

Я также попробовал следующее (с тестовым расширением memfs ):

let uri = new vscode.Uri('memfs', '', fileName);
let fsp = new vscode.FileSystemProvider();
fsp.writeFile(uri)
    .then(() => {
        console.log('written file');
    });

Но не похоже, что FileSystemProvider выставляет себя так, как я ожидал.

Как, если вообще, плагин может использовать и выполнять файловые операции с URI, которые находятся в пользовательских схемах, которыми могут обладать эти произвольные файловые системы?

1 Ответ

0 голосов
/ 11 июля 2018

Я столкнулся с той же проблемой. Оказывается, FileSystemProvider - это интерфейс, который должен реализовывать поставщик.

На GitHub есть отличный пример от Microsoft .

Суть этого такова:

Сначала они создают новый класс с именем MemFS, который реализует vscode.FileSystemProvider.

Затем они регистрируют это так:

const memFs = new MemFS();
context.subscriptions.push(
  vscode.workspace.registerFileSystemProvider('memfs', memFs, { 
    isCaseSensitive: true 
  }));

Первый параметр registerFileSystemProvider - это схема, которая означает, что поставщик файловой системы будет использоваться всякий раз, когда вы используете URI, начинающийся с memfs://.

Таким образом, вы используете fs как обычно, и схема определяет FileSystemProvider, который будет фактически использоваться. Это здорово, потому что это действительно делает вас прозрачным независимо от того, находится ли файл на диске, на каком-либо сервере на другом конце света или динамически генерируется поставщиком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...