7.5 读写文件

概念

  • Deno的运行时接口提供了读写整个文本文件的Deno.readTextFile接口和Deno.writeTextFile接口的异步函数。
  • 与Deno的许多API一样,也有同步替代方案。参见《Deno.readTextFileSync》和《》。
  • 使用--Allow-Read权限和--Allow-Write权限获取文件系统的访问权限。

概览

与文件系统交互以读写文件是一种常见需求。Deno提供了许多方法来通过标准库)和Deno运行时API.)来实现这一点。

正如Fetch Data example]中强调的那样,出于安全原因,Deno在默认情况下限制对输入/输出的访问。因此,在与文件系统交互时,必须将--Allow-read命令和--Allow-Write命令与‘deno run`命令一起使用。

读取文本文件

Deno运行时API可以通过Deno.readTextFile()方法读取文本文件,它只需要一个路径字符串或URL对象。该方法返回一个Promise,它提供对文件文本数据的访问。

Command: deno run --allow-read read.ts

/**
 * read.ts
 */
const text = Deno.readTextFile("./people.json");

text.then((response) => console.log(response));

/**
 * Output:
 *
 * [
 *   {"id": 1, "name": "John", "age": 23},
 *   {"id": 2, "name": "Sandra", "age": 51},
 *   {"id": 5, "name": "Devika", "age": 11}
 * ]
 */

写入文件

Deno运行时API允许开发者通过Deno.writeTextFile()方法向文件写入文本。它只需要文件路径和文本字符串。该方法返回承诺,该承诺将在文件成功写入时进行解析。

要运行该命令,必须将--Allow-Write命令标志提供给‘deno run命令。

Command: deno run --allow-write write.ts

/**
 * write.ts
 */
const write = Deno.writeTextFile("./hello.txt", "Hello World!");

write.then(() => console.log("File written to ./hello.txt"));

/**
 * Output: File written to ./hello.txt
 */

通过组合Deno.writeTextFileJSON.stringify,可以轻松地将序列化的JSON对象写入文件。本例使用同步的Deno.writeTextFileSync,也可以使用await Deno.writeTextFile异步完成。

要执行代码,‘deno run`命令需要WRITE标志。

Command: deno run --allow-write write.ts

/**
 * write.ts
 */
function writeJson(path: string, data: object): string {
  try {
    Deno.writeTextFileSync(path, JSON.stringify(data));

    return "Written to " + path;
  } catch (e) {
    return e.message;
  }
}

console.log(writeJson("./data.json", { hello: "World" }));

/**
 * Output: Written to ./data.json
 */

你可能感兴趣的:(7.5 读写文件)