fs 模块(文件系统)

一篇文章帮你梳理 FT 、FS、 DTFT、 DFS、 DFT 阅读详情


在 Node.js 开发中,与本地文件系统交互是高频需求 —— 无论是读写配置文件、处理用户上传的文档,还是管理项目目录结构,都离不开fs模块。本文将系统梳理fs模块的核心用法,从文件读写到目录管理,结合场景化示例与现代开发实践,帮你掌握文件系统操作的精髓。

什么是 fs 模块?

fs(全称file system)是 Node.js 的内置模块,无需额外安装即可使用。它提供了一套完整的 API,用于操作计算机磁盘中的文件和目录,涵盖创建、读取、更新、删除(CRUD)等全流程。

路径使用注意事项

在文件操作中,路径的正确性直接影响程序稳定性,需特别注意:

  • 相对路径:以执行 Node 命令的终端工作目录为基准(而非代码文件所在目录),容易出现路径偏移(例如在不同目录执行同一脚本)。

  • 绝对路径:从磁盘根目录开始的完整路径(如C:/project/file.txt或/user/project/file.txt),推荐优先使用。

  • 最佳实践:通过path模块的resolve方法结合__dirname(当前文件所在目录的绝对路径)生成绝对路径,例如:

const path = require("path");
const filePath = path.resolve(__dirname, "data.txt"); // 生成当前目录下data.txt的绝对路径

一、文件写入:将数据持久化到磁盘

文件写入是将内存中的数据保存到磁盘的过程,fs模块提供了 4 种常用方式,适用于不同场景。同时支持回调、同步、Promise三种编码风格,可根据项目规范选择。

1. 异步写入:writeFile(回调风格)

特点:非阻塞式操作,JavaScript 主线程不等待写入完成,适合不希望阻塞后续代码执行的场景。

语法:fs.writeFile(file, data[, options], callback)

  • file:文件路径(推荐绝对路径)

  • data:待写入的数据(字符串或 Buffer)

  • options:可选配置(如编码格式encoding: 'utf8',flag: 'w'默认覆盖,flag: 'wx'防止覆盖)

  • callback:写入完成后的回调(参数err为错误信息,成功时为null)

示例:

const fs = require("fs");
const path = require("path");
const filePath = path.resolve(__dirname, "notes.txt");

// 异步写入(防止覆盖:若文件已存在则报错)
fs.writeFile(
  filePath,
  "Hello Node.js",
  { encoding: "utf8", flag: "wx" },
  (err) => {
    if (err) {
      if (err.code === "EEXIST") {
        // 捕获"文件已存在"错误
        console.error("写入失败:文件已存在");
      } else {
        console.error("写入失败:", err);
      }
      return;
    }
    console.log("写入成功!");
  }
);

2. 同步写入:writeFileSync(阻塞风格)

特点:阻塞式操作,主线程会等待写入完成后再执行后续代码,适合简单场景或脚本工具(避免回调嵌套)。

语法:fs.writeFileSync(file, data[, options])(无回调,直接通过 try/catch 捕获错误)

示例:

const fs = require("fs");
const path = require("path");
const filePath = path.resolve(__dirname, "notes.txt");

try {
  fs.writeFileSync(filePath, "同步写入内容", "utf8");
  console.log("同步写入成功!");
} catch (err) {
  if (err.code === "EACCES") {
    // 捕获"权限不足"错误
    console.error("写入失败:无权限操作该文件");
  } else {
    console.error("同步写入失败:", err);
  }
}

3. Promise 风格写入:fs.promises(现代异步)

Node.js 10+ 支持fs.promises模块,提供 Promise 风格 API,可配合async/await避免回调嵌套,更符合现代 JavaScript 开发习惯。

示例:

const fs = require("fs").promises;
const path = require("path");

async function writeFileDemo() {
  const filePath = path.resolve(__dirname, "notes.txt");
  try {
    await fs.writeFile(filePath, "Promise风格的写入", "utf8");
    console.log("写入成功");
  } catch (err) {
    if (err.code === "ENOENT") {
      // 捕获"路径不存在"错误
      console.error("写入失败:目标目录不存在");
    } else {
      console.error("写入失败:", err);
    }
  }
}

writeFileDemo();

4. 追加写入:appendFile(及同步 / Promise 版本)

特点:在文件末尾添加内容(而非覆盖),常用于日志记录、数据累加等场景。

示例(Promise 风格):

const fs = require("fs").promises;
const path = require("path");

async function appendLog() {
  const logPath = path.resolve(__dirname, "app.log");
  try {
    await fs.appendFile(
      logPath,
      `[${new Date().toISOString()}] 用户登录\n`
    );
    console.log("日志追加成功");
  } catch (err) {
    console.error("日志写入失败:", err);
  }
}

appendLog();

5. 流式写入:createWriteStream(大文件场景)

特点:分块写入数据,无需一次性加载全部内容到内存,适合大文件(如 GB 级) 或频繁写入场景(如视频上传、大数据导出)。

语法:fs.createWriteStream(path[, options])(返回一个可写流对象)

示例:

const fs = require("fs");
const path = require("path");

// 创建流式写入对象(设置高水位线:每次缓冲区满1MB时写入磁盘)
const ws = fs.createWriteStream(
  path.resolve(__dirname, "large-file.txt"),
  { highWaterMark: 1024 * 1024 }
);

// 分块写入(模拟大文件内容)
let i = 0;
function write() {
  let ok = true;

  while (i < 10000 && ok) {
    ok = ws.write(`这是第${i}行数据\n`); // 当缓冲区满时,ok为false
    i++;
  }

  if (i === 10000) {
    ws.end("写入结束"); // 所有数据写入完成后关闭流
    return;
  }

  // 缓冲区清空后继续写入
  ws.once("drain", write);
}

write();

// 监听写入完成事件
ws.on("finish", () => {
  console.log("大文件写入完成!");
});

核心优势:通过 “缓冲区” 机制减少磁盘 IO 次数,大幅提升大文件处理效率。
highWaterMark 参数可控制缓冲区大小(默认 64KB)。

二、文件读取:从磁盘加载数据到内存

文件读取是将磁盘中的数据加载到内存的过程,fs模块提供 3 种常用方式,需根据文件大小和场景选择。

1. 异步读取:readFile(回调风格)

特点:非阻塞式读取,适合中小型文件(内容可一次性加载到内存)。

示例:

const fs = require("fs");
const path = require("path");
const filePath = path.resolve(__dirname, "notes.txt");

// 异步读取(指定编码为utf8,直接返回字符串)
fs.readFile(filePath, "utf8", (err, data) => {
  if (err) {
    if (err.code === "ENOENT") {
      console.error("读取失败:文件不存在");
    } else {
      console.error("读取失败:", err);
    }
    return;
  }
  console.log("文件内容:", data);
});

2. 同步读取:readFileSync(阻塞风格)

示例:

const fs = require("fs");
const path = require("path");
const filePath = path.resolve(__dirname, "notes.txt");

try {
  const data = fs.readFileSync(filePath, "utf8");
  console.log("同步读取内容:", data);
} catch (err) {
  console.error("同步读取失败:", err);
}

3. Promise 风格读取

const fs = require("fs").promises;
const path = require("path");

async function readFileDemo() {
  const filePath = path.resolve(__dirname, "notes.txt");
  try {
    const data = await fs.readFile(filePath, "utf8");
    console.log("Promise读取内容:", data);
  } catch (err) {
    console.error("读取失败:", err);
  }
}

readFileDemo();

4. 流式读取:createReadStream(大文件场景)

特点:分块读取数据,每次读取固定大小(默认 64KB),适合大文件(避免一次性占用过多内存)。

示例:

const fs = require("fs");
const path = require("path");

// 创建流式读取对象(设置每次读取128KB)
const rs = fs.createReadStream(
  path.resolve(__dirname, "large-file.txt"),
  { highWaterMark: 128 * 1024 }
);

// 监听数据块事件(每次读取到数据时触发)
rs.on("data", (chunk) => {
  console.log(`读取到${chunk.length}字节数据`);
  // 处理数据块(如解析、转发等)
  // 若处理耗时,可暂停读取:rs.pause(),处理完后再rs.resume()
});

// 监听读取完成事件
rs.on("end", () => {
  console.log("文件读取完毕!");
});

// 监听错误事件
rs.on("error", (err) => {
  console.error("读取错误:", err);
});

典型场景:视频播放、大日志文件分析、断点续传等。

三、文件移动与重命名:rename

fs.rename(及同步 / Promise 版本)是一个 “多功能” API,既能重命名文件 / 目录,也能移动路径(跨目录、跨磁盘)。

示例(Promise 风格):

const fs = require("fs").promises;
const path = require("path");

async function moveFile() {
  // 1. 重命名文件
  const oldName = path.resolve(__dirname, "notes.txt");
  const newName = path.resolve(__dirname, "diary.txt");

  try {
    await fs.rename(oldName, newName);
    console.log("重命名成功!");
  } catch (err) {
    console.error("重命名失败:", err);
  }

  // 2. 移动文件到另一个目录(目标目录需存在)
  const sourcePath = path.resolve(__dirname, "diary.txt");
  const targetPath = path.resolve(__dirname, "docs", "diary.txt");

  try {
    await fs.rename(sourcePath, targetPath);
    console.log("移动成功!");
  } catch (err) {
    console.error("移动失败:", err);
  }
}

moveFile();

注意:若目标路径已存在同名文件,会被覆盖 ;移动跨磁盘文件时,可能触发复制 + 删除操作(性能较低)。

四、文件删除:unlink /rm(推荐)

删除文件可使用fs.unlink(传统方法)或fs.rm(Node.js 14.14 + 新增,更推荐)。

1. 现代方法:rm(支持更多选项)

const fs = require("fs").promises;
const path = require("path");

async function deleteFile() {
  // 删除文件(force: true 忽略不存在的文件,避免报错)
  try {
    await fs.rm(path.resolve(__dirname, "temp.txt"), { force: true });
    console.log("文件已删除");
  } catch (err) {
    console.error("删除失败:", err);
  }
}

deleteFile();

五、文件夹操作:创建、读取与删除

目录(文件夹)操作是管理文件系统结构的基础,fs模块提供了专门的 API。

1. 创建文件夹:mkdir(支持递归)

特点:支持递归创建多级目录(如a/b/c),需指定recursive: true。

示例:

const fs = require("fs").promises;
const path = require("path");

async function createDir() {
  // 递归创建多级目录
  try {
    await fs.mkdir(path.resolve(__dirname, "data/logs/2024"), {
      recursive: true,
    });
    console.log("多级目录创建成功");
  } catch (err) {
    console.error("创建失败:", err);
  }
}

createDir();

2. 读取文件夹:readdir(获取目录内容)

作用:获取目录下的所有文件和子目录名称(默认仅名称,可通过选项获取详细信息)。

示例:

const fs = require("fs").promises;
const path = require("path");

async function readDir() {
  const dirPath = path.resolve(__dirname, "docs");
  try {
    // 读取详细信息(包含是否为文件/目录)
    const items = await fs.readdir(dirPath, { withFileTypes: true });
    items.forEach((item) => {
      if (item.isFile()) {
        console.log("文件:", item.name);
      } else if (item.isDirectory()) {
        console.log("目录:", item.name);
      }
    });
  } catch (err) {
    console.error("读取失败:", err);
  }
}

readDir();

3. 删除文件夹:rm(支持递归删除非空目录)

Node.js 14.14 + 推荐使用fs.rm,支持recursive: true直接删除非空目录(无需手动删除内部文件)。

示例:

const fs = require("fs").promises;
const path = require("path");

async function deleteDir() {
  const dirPath = path.resolve(__dirname, "data");
  try {
    // recursive: true 递归删除所有子内容,force: true 忽略不存在的目录
    await fs.rm(dirPath, { recursive: true, force: true });
    console.log("目录已删除");
  } catch (err) {
    console.error("删除失败:", err);
  }
}

deleteDir();

六、查看资源状态:stat

fs.stat(及同步 / Promise 版本)用于获取文件或目录的详细信息(大小、创建时间、类型等)。

示例:

const fs = require("fs").promises;
const path = require("path");

async function getStats() {
  const targetPath = path.resolve(__dirname, "docs");
  try {
    const stats = await fs.stat(targetPath);
    console.log("是否为文件:", stats.isFile()); // false(若targetPath是目录)
    console.log("是否为目录:", stats.isDirectory()); // true
    console.log("大小:", stats.size, "字节");
    console.log("最后修改时间:", stats.mtime.toLocaleString());
  } catch (err) {
    console.error("获取状态失败:", err);
  }
}

getStats();

七、实战场景案例

将 API 与真实业务场景结合,理解 “何时用什么 API”:

场景 1:日志切割(按日期拆分日志)

需求:每天生成一个日志文件(如2024-10-20.log),避免单个日志过大。

实现思路:用createWriteStream结合定时任务,每天零点切换输出流。

const fs = require("fs");
const path = require("path");
const { format } = require("date-fns"); // 需安装date-fns:处理日期

let currentStream;
let currentDate = format(new Date(), "yyyy-MM-dd");

// 获取当前日志流
function getLogStream() {
  const today = format(new Date(), "yyyy-MM-dd");

  if (today !== currentDate || !currentStream) {
    // 切换日期或流未初始化时,创建新流
    currentDate = today;
    const logPath = path.resolve(__dirname, `logs/${currentDate}.log`);

    // 关闭旧流(若存在)
    if (currentStream) currentStream.close();

    // 创建新流(追加模式)
    currentStream = fs.createWriteStream(logPath, { flags: "a" });
  }

  return currentStream;
}

// 写入日志
function writeLog(content) {
  const stream = getLogStream();
  stream.write(`[${new Date().toISOString()}] ${content}\n`);
}

// 测试:每3秒写入一条日志
setInterval(() => {
  writeLog("用户访问了首页");
}, 3000);

场景 2:大文件复制(避免内存溢出)

需求:复制一个 1GB 的视频文件,避免一次性加载到内存。

实现思路:用可读流 + 可写流 “管道”(pipe)传输数据。

const fs = require("fs");
const path = require("path");

function copyLargeFile(source, target) {
  const rs = fs.createReadStream(source);
  const ws = fs.createWriteStream(target);

  // 用pipe连接流:自动处理数据传输、缓冲区控制、错误处理
  rs.pipe(ws);

  // 监听完成事件
  ws.on("finish", () => {
    console.log("文件复制完成");
  });

  // 监听错误事件
  rs.on("error", (err) => console.error("读取错误:", err));
  ws.on("error", (err) => console.error("写入错误:", err));
}

// 复制视频文件
copyLargeFile(
  path.resolve(__dirname, "source.mp4"),
  path.resolve(__dirname, "target.mp4")
);

场景 3:目录批量处理(遍历并修改所有 txt 文件)

需求:递归遍历docs目录,将所有.txt文件中的 “旧内容” 替换为 “新内容”。

实现思路:结合readdir(递归遍历)+ stat(判断文件类型)+ readFile/writeFile(修改内容)。

const fs = require("fs").promises;
const path = require("path");

async function replaceInTxtFiles(dirPath, oldStr, newStr) {
  const items = await fs.readdir(dirPath, { withFileTypes: true });

  for (const item of items) {
    const fullPath = path.resolve(dirPath, item.name);

    if (item.isDirectory()) {
      // 递归处理子目录
      await replaceInTxtFiles(fullPath, oldStr, newStr);
    } else if (item.isFile() && item.name.endsWith(".txt")) {
      // 处理txt文件
      const content = await fs.readFile(fullPath, "utf8");
      const newContent = content.replaceAll(oldStr, newStr);
      await fs.writeFile(fullPath, newContent, "utf8");
      console.log(`已处理:${fullPath}`);
    }
  }
}

// 批量替换
replaceInTxtFiles(path.resolve(__dirname, "docs"), "旧内容", "新内容")
  .then(() => console.log("所有文件处理完成"))
  .catch((err) => console.error("处理失败:", err));

八、API 性能对比与选择指南

操作场景推荐 API不推荐 API原因
小文件单次读写(<100KB)readFile/writeFile流式操作流式操作的初始化成本高于收益
大文件读写(>10MB)流式操作readFile/writeFile易导致内存溢出(一次性加载)
频繁追加(如日志)appendFile/ 流式写入writeFilewriteFile 会覆盖内容,需额外处理
脚本工具 / 简单场景同步 API(如readFileSync)异步 API同步代码更简洁,无回调嵌套
现代项目 / 复杂流程fs.promises + async/await回调 API避免回调地狱,代码可读性更高

总结

fs模块是 Node.js 操作文件系统的核心,掌握它能让你轻松处理本地文件交互。关键总结:

  1. 路径安全:始终使用path.resolve(__dirname, '相对路径')生成绝对路径,避免相对路径陷阱。

  2. 编码风格:新手推荐fs.promises + async/await,兼顾可读性与非阻塞特性;简单脚本可用同步 API。

  3. 大文件处理:必用流式操作(createReadStream/createWriteStream),通过pipe简化数据传输。

  4. 错误处理:重点关注ENOENT(路径不存在)、EEXIST(文件已存在)、EACCES(权限不足)等常见错误,针对性处理。

  5. 实战技巧:日志切割、大文件复制、目录批量处理等场景,需结合递归、流控制、定时任务等技术组合 API。

通过本文的梳理,应对大多数文件系统操作场景。实际开发中,可根据具体需求灵活选择 API,平衡性能与开发效率。

GFS 分布式文件系统 一、GlusterFS概述 1.GlusterFS简介 GlusterFS 是一个开源的分布式文件系统。 由存储服务器、客户端以及NFS/Samba 存储网关(可选,根据需要选择使用)组成。 没有元数据服务器组件,这有助于提升整个系统的性能、可靠性和稳定性。 MFS 传统的分布式文件系统大多通过元服务器来存储元数据,元数据包含存储节点上的目录信息、目录结构等。这样的设计在浏览目录时效率高,但是也存在一些缺陷,例如单点故障。一旦元数据服务器出现故障,即使节点具备再高的冗余性,整个存储系统也将崩溃。而 G 阅读详情

相关推荐

[node] 2 fs文件系统模块

fs模块是Node.js官方提供的内置Api,用来操作文件的模块。它提供了一系列的属性和方法,来满足用户对文件的操作需求1 掌握fs中文件处理方法readFile、writeFile等的基础用法2 node如何安装3 一些常用的终端快捷键fill:#333;color:#333;color:#333;fill:none;fs文件系统模块1 readFile的用法2 writeFile用法。

weixin_45291798的博客 718

Nodejs——fs文件系统模块

它提供了丰富的函数和方法,可以进行文件的读取、写入、复制、删除等操作,同时也支持目录的创建、遍历和修改等操作。使用fs模块,你可以在Node.js环境中轻松地与文件系统交互。使用 fs 模块的时候,尽量使用 __dirname 将路径转化为绝对路径,这样可以避免相对路径产生的。相对路径中所谓的 当前目录 ,指的是 命令行的工作目录 ,而并非是文件的所在目录。在 Node.js 中,我们可以使用。在 Node.js 中,我们可以使用。在 Node.js 中,我们可以使用。

LSH_的个人博客 1万+

node.js文件系统(fs) - 创建文件、打开文件、写入数据、追加数据、读取数据、创建目录、删除目录

注意:以下所有示例均是异步语法! 注意:以下所有示例均是异步语法! 创建文件 node.js 允许我们在计算机本地创建文件,例如创建一个 word 文件: // 引入核心模块(fs) var fs = require('fs') // API fs.writeFile('./hello.doc', 'hello', (error) => { // 创建失败 if(er...

🏆 前端领域优质创作者 2万+

Nodejs入门(一)fs模块

包含nodejs之fs模块,文件操作、文件夹操作、查看资源状态、以及fs实践

m0_71927557的博客 1765

电池管理系统(BMS)系列—状态估计之SOH

BMS系列文章,介绍了SOH估计

zxx52113140的博客 1846

C语言——预处理指令

return 0;这里是可以编译通过的,运行结果也是对的:;;return 0;这里编译器会报错:这里是有语法错误的。在C语言中,#include是一个预处理指令,用于将一个源文件的内容插入到另一个源文件中。这通常用于包含标准库或自定义库的头文件,以便在程序中使用这些库中定义的函数、类型和宏。#include或:用于包含标准库头文件。查找策略是,编译器会在标准库头文件目录中查找这些文件。:用于包含用户自定义的头文件。

Stewie Lee的博客 3188

Nodejs之fs(文件系统)模块

目录一、fs模块简介 一、fs模块简介 fs(file system)模块是nodejs提供的用于访问主机文件系统的功能模块,它使得运行于nodejs环境下的JavaScript具备直接读写本地文件的能力。 fs模块是nodejs的核心模块之一,只要安装了nodejs,就可以直接使用fs模块,不需要单独安装。引入fs模块非常简单: let fs = require('fs'); 接下来就可以调用fs模块的相关接口直接读写文件系统。 fs模块主要提供了以下的接口类: fs.Dir,目录类。可理解为文件夹。

夕山雨的博客 1万+

CoaXPress协议入门(1)---- CXP测试套件

CoaXPress (简称CXP)是指一种采用同轴线缆进行互联的相机数据传输标准,主要用于替代之前的Camera Link协议,常见于科学相机、工业相机、医学图像、航空防务等场景。CXP是一个非对称的高速点对点串行传输协议,主要用于传输视频和静态图像,线缆多使用单条或多条同轴电缆。CXP易于集成,可以获得灵活可靠的性能,通过使用标准的同轴线缆,比如RG59 和 RG6规格(推荐使用RG6),并且图像、控制通讯、触发、电源都可以使用同一条线缆。

素手挽剑 9510

fs 文件系统模块

1. 什么是 fs 文件系统模块 fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。 例如: l fs.readFile() 方法,用来读取指定文件中的内容 l fs.writeFile() 方法,用来向指定的文件中写入内容 如果要在 JavaScript 代码中,使用 fs 模块来操作文件,则需要使用如下的方式先导入它: const fs = require('fs') ...

qq_45901521的博客 1109

c#.net使用正则表达式验证文本中是否包含手机号码或电话号码?

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Collections; namespace RegularPhoneApp { class Program

码农 3584

LVGL core group焦点分组管理(lv_group.c)

lv_group_t是用于焦点管理的,将需要获取焦点的对像加入到同一个分组内,再将其通过挂到指定的事件驱动中,就可以控制焦点了。而被加入的对象又可以通过焦点状态事件和事件来控制对象的焦点逻辑了。创建好的分组通过接口挂事件驱动中,这样就可以指定一个自定义的焦点分组了。;) {if(!} }友情提示:无论是接口还是都是单例的,即被设置后前一个被设置的值就失效了;此方案可以保证焦点的唯一 性,但也一定要记住要在适合的位置设置回来,以防丢失焦点。

Bigan(安)的博客 3907

文件系统(fs)模块

在 Node.js 中,文件系统(fs)模块是与文件和目录交互的核心模块之一。它提供了一系列的方法和属性,用于对系统文件及目录进行创建、读取、写入、删除、查询等操作。

weixin_45310358的博客 956

AI 智能体(Agent)应用开发工程师 · 进阶面试 (五)

在有多位 Agent 共同参与决策时(如评审委员会、代码审查小组),它们可能提出截然相反的建议。共识机制就是用来在这种冲突中得出唯一行动方案的规则。常用机制:多数投票:每个 Agent 一票,根据投票结果决定。实现简单,但忽略了专业度差异。加权投票:根据 Agent 的角色重要性或历史表现赋予不同权重,例如首席架构师 Agent 的票权重是普通开发者 Agent 的 2 倍。管理者仲裁:由一个权限更高的 Manager Agent 听取各方理由后做出最终裁决。这类似于层级制组织决策。辩论收敛。

篮球界最会写bug的人;程序猿中打球最菜的人。 393

node内置模块——fs文件系统模块

文章目录文件系统的定义文件系统的重要作用fs模块同步和异步调用文件的写入文件的同步和异步写入打开文件向文件写内容保存并关闭简单文件写入文件进写入的特点文件的打开状态流式文件写入文件的读取同步文件读取异步文件读取简单文件读取流式文件读取流式文件实现文件的读取和写入传统写法简单写法fs的其他操作 文件系统的定义 文件系统:文件系统简单来说就是通过Node来操作系统中的文件 。 文件系统的重要作用 在Node中,与文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端。 fs模块 Node通过f

mantou_riji的博客 2745

【unity小技巧】委托(Delegate)的基础使用和介绍

在Unity中,委托(Delegate)是一种用于处理方法回调的特殊类型。它允许您将方法作为参数传递给其他方法,并在需要时调用这些方法。委托在游戏开发中非常有用,特别是在事件处理、消息传递和异步操作方面。它提供了一种灵活的方式来注册和触发方法,而无需显式地知道这些方法的实现细节。个人理解:可以把委托理解为一个容器,容器里面放可以放很多函数方法。一调用委托,里面所有的函数方法都会同步被执行。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 7237

大模型知识边界探索:LLM设计的极限测试

最优化理论是数学中的一个分支,主要研究如何从给定的一组约束条件下找到最优解。目标函数:定义了需要优化的指标,可以是最大化或最小化。约束条件:定义了在优化过程中需要满足的限制条件。无约束优化:目标函数和约束条件都不存在。有约束优化:目标函数存在,但存在约束条件。多目标优化:同时需要优化多个目标函数。极限测试(Ultimate Test)是一种系统性的方法,用于评估大型模型(如LLM)在极端条件下的性能和稳定性。极端数据分布:与模型训练数据分布显著不同的数据集。极端计算资源。

AI天才研究院 432

Node fs文件系统模块总结

一、fs (文件系统) 在 Node 中,与文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端。 Node 通过 fs 模块来和文件系统进行交互。 该模块提供了一些标准文件访问 API 来打开、 读取、写入文件,以及与其交互。 要使用 fs 模块,首先需要对其进行加载。 const fs = require("fs"); // 加载fs文件系统模块 二、同步和异步调...

路虽远,行则必至! 1011

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

fs文件系统模块

什么是fs文件系统模块 fs模块是Node.js官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

m0_51195865的博客 1478

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

fs文件系统模块- path路径模块- http路径模块

fs文件系统模块-path路径模块- http路径模块

zkfgyx的博客 1861

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Node.js 入门 —— fs 文件系统模块

本文内容来自bilibili黑马程序员Node官网Node.js 是一个基于 Chrome V8 引擎的JavaScript运行环境终端(terminal)是专门为开发人员设计的,用于实现人机交互的一种方式常用终端命令:tab:快速补全文件路径esc:清空当前命令(Ctrl + u)cls:清空当前终端(mac:clear)fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

Yana's Blog 1388

JavaScript【FS】文件系统模块

JavaScript文件系统模块【fs】非常详细,关于文件系统的创建删除原理非常透彻

00后的一位普通处女座前端程序员 6862

Node.js 中的 fs 模块详解:文件系统操作全掌握

本篇博客将带你系统性地了解 fs 模块的常用方法、同步与异步差异,以及实际应用场景中的示例代码,助你轻松掌握 Node.js 文件系统操作。

2301_81137804的博客 1043
上一篇: Buffer(缓冲器)
下一篇: path 模块
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值