如何在 Deno 中递归读取目录?

Leo*_*896 3 file-io deno

我正在尝试使用 Deno 递归读取文件Deno.readDir,但他们提供的示例仅执行给定的文件夹:

for await (const entry of Deno.readDir(Deno.cwd())) {
  console.log(entry.name);
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能使这个递归?

jse*_*ksn 8

walkDeno 的标准库包含一个为此目的调用的函数。它可以在std/fs/walk.ts. 这是一个例子:

/Users/deno/so-74953935/main.ts

import { walk } from "https://deno.land/std@0.170.0/fs/walk.ts";

for await (const walkEntry of walk(Deno.cwd())) {
  const type = walkEntry.isSymlink
    ? "symlink"
    : walkEntry.isFile
    ? "file"
    : "directory";

  console.log(type, walkEntry.path);
}

Run Code Online (Sandbox Code Playgroud)

在终端中运行:

% pwd
/Users/deno/so-74953935

% ls -AF
.vscode/    deno.jsonc  deno.lock   main.ts

% ls -AF .vscode 
settings.json

% deno --version
deno 1.29.1 (release, x86_64-apple-darwin)
v8 10.9.194.5
typescript 4.9.4

% deno run --allow-read main.ts
directory /Users/deno/so-74953935
file /Users/deno/so-74953935/main.ts
file /Users/deno/so-74953935/deno.jsonc
file /Users/deno/so-74953935/deno.lock
directory /Users/deno/so-74953935/.vscode
file /Users/deno/so-74953935/.vscode/settings.json

Run Code Online (Sandbox Code Playgroud)