Skip to main content
本页记录的 Bun.fileBun.write API 经过高度优化,是 Bun 中处理文件的推荐方式。对于它们未覆盖的操作,如 mkdirreaddir,请使用 Bun 几乎完整 实现的 node:fs 模块。

读取文件 (Bun.file())

Bun.file(path): BunFile 使用 Bun.file(path) 函数创建一个 BunFile 实例。BunFile 表示一个惰性加载的文件;初始化它不会从磁盘读取文件。
该引用符合 Blob 接口,因此内容可以以多种格式读取。
你也可以从数值型文件描述符file:// URL 创建文件引用。
BunFile 可以指向磁盘上不存在的文件位置。
默认 MIME 类型是 text/plain;charset=utf-8。通过向 Bun.file 传递第二个参数来覆盖它。
为方便起见,Bun 将 stdinstdoutstderr 作为 BunFile 实例暴露。

删除文件 (file.delete())

调用 .delete() 删除文件。

写入文件 (Bun.write())

Bun.write(destination, data): Promise<number> Bun.write 函数是一个多功能工具,用于将各种类型的数据写入磁盘。 第一个参数是 destination,可以是以下任何一种:
  • string:文件系统上的路径。使用 "path" 模块操作路径。
  • URL:一个 file:// 描述符。
  • BunFile:文件引用。
第二个参数是要写入的数据。可以是以下任何一种:
  • string
  • Blob(包括 BunFile
  • ArrayBufferSharedArrayBuffer
  • TypedArrayUint8Array 等)
  • Response
Bun 会为当前平台上每种组合使用最快的可用系统调用。
将字符串写入磁盘:
将文件复制到磁盘上的另一个位置:
将字节数组写入磁盘:
将文件写入 stdout
将 HTTP 响应的主体写入磁盘:

增量写入与 FileSink

Bun 提供了一个名为 FileSink 的原生增量文件写入 API。要从 BunFile 获取 FileSink 实例:
要增量写入文件,调用 .write()
这些数据块在内部缓冲。要刷新缓冲区到磁盘,使用 .flush()。它会返回已刷新的字节数。
FileSink 的_高水位线_被达到时,即其内部缓冲区已满,缓冲区也会自动刷新。你可以配置此值。
要刷新缓冲区并关闭文件:
默认情况下,bun 进程会保持活动状态,直到此 FileSink 通过 .end() 显式关闭。要退出此行为,对实例执行 “unref”。

目录

Bun 的 node:fs 实现速度很快。在 Bun 中操作目录请使用 node:fs

读取目录 (readdir)

要在 Bun 中读取目录,使用 node:fsreaddir

递归读取目录

要在 Bun 中递归读取目录,使用带 recursive: truereaddir

创建目录 (mkdir)

要递归创建目录,使用 node:fs 中的 mkdir

基准测试

以下是 Linux cat 命令的 3 行实现。
cat.ts
要运行此文件:
terminal
在 Linux 上,对大文件来说,它的运行速度是 GNU cat 的 2 倍。
Cat 截图

参考