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
 */
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:在 freeCodeCamp 中文社区阅读原文 The Deno Handbook原文作者:Flavio...
    hylerrix阅读 4,581评论 0 0
  • 介绍 假设您的模块依赖于远程模块https://some.url/a.ts[https://some.url/a....
    9e8aeff1c70c阅读 1,631评论 0 2
  • 默认情况下,Deno是安全的。因此,除非您专门启用它,否则deno模块不能访问文件,网络或环境。要访问安全敏感的区...
    9e8aeff1c70c阅读 3,382评论 0 1
  • 权限可以从运行deno命令时获得。用户代码通常会假定自己拥有一组必需的权限,但是在执行过程中不能保证所授予的权限集...
    9e8aeff1c70c阅读 2,325评论 0 2
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,746评论 2 7