Deno 中使用高级 API 进行文件操作的技巧和注意事项

前言

Deno 是一个基于 TypeScript 构建的新型运行时环境,旨在提供一种更简单、更安全的方式来构建和运行 JavaScript 应用程序。与 Node.js 不同,Deno 内置了一些高级 API,其中包括了许多关于文件和目录处理的功能。

在这篇文章中,我们将学习如何使用 Deno 提供的高级 API 进行文件操作,并且介绍一些使用这些 API 时的注意事项和技巧。

使用 Deno 核心模块的文件系统 API

Deno 基础库内置了很多关于文件系统处理的 API。你可以使用这些 API 来操作文件和文件夹,包括创建、删除、查找、迭代、读写等等操作。在这里,我们会介绍其中的一些常用的 API,并讲述如何使用它们来实现一些实际的任务。

下载文件

如果你想要从网上下载一个文件到本地,Deno 提供了一个通用的 fetch API,它可以从指定的 URL 中获取响应,并将响应中的二进制数据保存到文件或者内存中。

------ - ---- - ---- -------

----- ---- - ----- ---------------------------------------
----- ------ - ----- -------------------
----- --------------------------- --- --------------------

在这里,我们首先使用 fetch 方法从网络中获取到需要下载的文件的响应。因为 fetch 返回的是一个 Promise 对象,所以我们使用了 await 关键字来等待请求完成。一旦获得响应,我们就可以使用此响应中的 .arrayBuffer() 方法来将响应的二进制数据存放到内存中。

接着,我们使用 Uint8Array 构造函数来将 buffer 内存中的二进制数据转为 Uint8Array 实例,这样便可以存放到磁盘中了。最后使用 Deno.writeFile() 来将图片写入到本地磁盘中。

如果你想要将这个图片保存到指定的目录中,那么可以直接提供完整的文件路径作为 writeFile() 的第一个参数:

----- ------------------------------------ --- --------------------

读取文件

如果你想读取一个文本文件的内容,那么你可以使用 readTextFile() 函数,它会返回一个 Promise 包含了文件的 UTF-8 文本内容:

----- ------- - ----- ---------------------------------------

如果你希望获得一个文件的二进制数据,可以使用 readAll() 函数。它返回的是一个 Uint8Array 数组:

----- ---- - ----- ------------------------------------

同步读写文件

如果你想要使用更加阻塞版的同步 API,可以使用 Deno 还支持的函数。但是我们应该尽量使用异步 API,期望不要随地使用同步 API。

----- ------- - --- ---------------------
----- ---- - ------------------------------
----------------------------------

迭代目录

如果您希望在一个目录下查找所有的文件和目录,可以使用 Deno 提供的 walk() 函数。这个函数将接受一个目录的路径作为参数,并且递归地遍历该目录下的所有文件和目录。对于每一个文件和目录,回调函数都将被调用,传递两个参数:路径和文件信息。

以下示例使用 walk() 函数,在 src 目录中寻找所有的 TypeScript 文件:

--- ----- ------ ----- -- -------------------- -
  -- ------------- -- --------------------------- -
    ----- ------- - ----- ---------------------------------------
    ---------------------
  -
-

编写安全的文件操作代码

Deno 的文件系统 API 通过沙盒机制来保证了安全性。当你的应用程序需要读取或写入本地文件时,Deno 会要求你添加相应的权限,以确保只有经过授权的应用程序可以操作文件系统。在这里,我们想介绍一些如何编写安全的文件操作代码的建议。

1. 检查文件是否存在

在进行任何文件读取或写入操作之前,最好先检查文件是否存在,并在需要时创建文件或文件夹。可以使用 Deno.statSync() 函数来检查文件或目录是否存在。

-- --------------------------------------- -
  -- -----------------
  --------------------------------------- --- ---------------
- ---- -
  -- ----------------
  --------------------- --------- ---------------------------------------------
-

2. 检查读写权限

在使用文件读写 API 之前,应该首先检查应用程序是否有相应的权限,否则可能会抛出权限错误。

--- -
  ----- ------- - ----- ---------------------------------------
  ---------------------
- ----- --- -
  -- -- ---------- ----------------------------- -
    ----------------------------
  - ---- -
    -------------------------- ---
  -
-

同样地,当你需要写入文件时,也应该检查写入操作是否有足够的权限:

--- -
  ----- --------------------------------------- ------- ---------
- ----- --- -
  -- -- ---------- ----------------------------- -
    ----------------------------
  - ---- -
    -------------------------- ---
  -
-

3. 避免硬编码

最后,当你使用文件系统 API 时,应该尽量避免使用硬编码路径,尽可能地使用相对路径或者配置文件中的路径。

----- ---- - ------------ -- ----------------
----- ------- - ----- ------------------------

结论

通过这篇文章,我们学习了如何使用 Deno 提供的高级 API 来进行文件操作。我们看到了一些重要的示例代码,同时还介绍了如何编写安全的文件操作代码。我相信,如果你能够遵循这些建议并照常编写代码,你的应用程序将能够更加安全和可靠。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670dd4a75f551281025e900a