node_fs模块

本文详细介绍了Node.js中的fs模块,包括读写文件、目录操作、路径处理、流式I/O以及常用模块如path和url的使用方法。通过实例演示了如何进行文件同步与异步操作,适合深入理解Node.js文件系统编程。

fs 模块 file System 文件系统 核心/内置模块 不用下载 直接require引用

  • 方法 同步和异步

  • 文件

    • readFileSync/readFile 读取文件

      • fs.readFileSync(‘filePath’, 'utf-8);
      • fs.readFile(‘filePath’, ‘utf-8’, (err, data) => {});
    • writeFileSync/writeFile 覆盖式写入文件

      • fs.writeFileSync(‘filePath’, ‘写入内容’);
      • fs.writeFile(‘filePath’, ‘写入内容’, (err) => {});
    • appendFileSync/appendFile 追加式写文件

      • fs.appendFileSync(‘filePath’, ‘写入内容’);
      • fs.appendFile(‘filePath’, ‘写入内容’, (err) => {});
    • unlinkSync/unlink 删除文件

      • fs.unlinkSync(‘filePath’);
      • fs.unlink(‘filePath’, (err) =>{});
    • copyFileSync/copyFile 复制文件

      • fs.copyFileSync(‘源文件’, ‘目标文件’);
      • fs.copyFile(‘源文件’, ‘目标文件’, (err) => {});
    • renameSync/rename 重命名

      • fs.renameSync(‘源文件’, ‘新文件’);
      • fs.rename(‘源文件’, ‘新文件’, (err) => {});
  • 文件夹

    • readdirSync/readdir 读取目录 只读一层

      • fs.readdirSync(‘filePath’);
      • fs.readdir(‘filePath’, (err, data) => {});
    • stat 检测文件

      • fs.statSync('filePath);
      • fs.stat(‘filePath’, (err, stats) => {});
        • stats.isFile(); 判断是不是文件
        • stats.isDirectory(); 判断是不是目录
    • 判断文件/目录

      • existsSync 存在返回true 不存在false
      • accessSync 存在什么都不发生 不存在报错
    • mkdirSync/mkdir 创建目录

      • fs.mkdirSync(‘filePath’);
      • fs.mkdir(‘filePath’, (err) => {});
    • rmdirSync/rmdir 删除目录

      • fs.rmdirSync(‘filePath’);
      • fs.rmdir(‘filePath’, (err) => {});

path

  • Node.js path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方式引入该模块:

  • 用法 let path = require(“path”)

  • api

  • path.join([path1][, path2][, …]) 用于连接路径。该方法的主要用途在于,会正确使用当前系统的路径分隔符,Unix系统是"/",Windows系统是""。

  • path.resolve([from …], to)将 to 参数解析为绝对路径,给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve(’/foo’, ‘/bar’, ‘baz’) 会返回 /bar/baz。

    • 例如:
      path.resolve(’/foo/bar’, ‘./baz’);
      // 返回: ‘/foo/bar/baz’

      path.resolve(’/foo/bar’, ‘/tmp/file/’);
      // 返回: ‘/tmp/file’

      path.resolve(‘wwwroot’, ‘static_files/png/’, ‘…/gif/image.gif’);
      // 如果当前工作目录为 /home/myself/node,
      // 则返回 ‘/home/myself/node/wwwroot/static_files/gif/image.gif’

    • path.extname§
      返回路径中文件的后缀名,即路径中最后一个’.‘之后的部分。如果一个路径中并不包含’.‘或该路径只包含一个’.’ 且这个’.'为路径的第一个字符,则此命令返回空字符串

    • path.parse(pathString)
      返回路径字符串的对象。

url模块(解析地址/生成地址/拼接地址)

1,url.parse(要解析的路径 ,解析出来的query查询字符串(false 默认)还是查询对象(true)
    let str = 'https://baidu.com:8080/p/a/t/h?id=1&name=美女';
    let url = require('url');
    console.log(url.parse(str,true).query.id);
2,url.format(url) -- 将一个URL对象转换为URL字符串
    例如:
         let urlObj = {
            protocol: "http",
            host: "127.1.1.0",
            port: "8080",
            search: "?name=张三"
        }
        console.log(url.format(urlObj));
3,url.resolve() 可以用于拼接URL
    例如:
        let p = url.resolve('/one/two/three', '/four') // '/one/two/four'
        let p1 = url.resolve('http://example.com/two/', '/one') // 'http://example.com/one'

  • 流式读写
    • 1、创建可读流 const rs = fs.createReadStream(‘filepath’);

    • 2、创建可写流 const ws = fs.createWriteStream(‘filepath’);

    • 3、管道输出 rs.pipe(ws);

    • 可读流 监听事件

      • rs.on(‘data’, (chunk) => {});
      • rs.on(‘end’, () => {});
### 查看 `node_modules` 中所有模块的版本信息 可以通过以下方法列出 `node_modules` 中所有模块及其版本信息: #### 方法一:使用 `npm list` 运行以下命令可以显示当前项目中安装的所有模块及其版本信息,包括嵌套依赖关系: ```bash npm list --depth=0 ``` 此命令仅显示顶层依赖项及其版本信息,而不显示子依赖项。如果需要查看完整依赖树,可以省略 `--depth=0` 参数[^1]。 #### 方法二:使用 `ls` 命令结合 `grep` 对于更详细的输出,可以结合 `ls` 和 `grep` 命令来过滤和展示模块版本信息。例如: ```bash ls node_modules | xargs -I {} sh -c 'echo {}; cat node_modules/{}/package.json 2>/dev/null | grep version' ``` 上述命令会列出 `node_modules` 目录下的每个模块,并从其 `package.json` 文件中提取版本信息[^3]。 #### 方法三:使用 `tree` 命令 如果系统中安装了 `tree` 工具,可以使用以下命令以树状结构展示模块及其版本信息: ```bash tree -L 1 node_modules ``` 此命令仅显示 `node_modules` 的顶层目录。若需进一步查看版本信息,可结合其他工具如 `jq` 处理 JSON 数据[^3]。 #### 方法四:使用自定义脚本 编写一个简单的 Node.js 脚本来解析 `node_modules` 中的模块版本信息: ```javascript const fs = require('fs'); const path = require('path'); const modulesDir = path.resolve('node_modules'); fs.readdir(modulesDir, (err, files) => { if (err) throw err; files.forEach(file => { const packagePath = path.join(modulesDir, file, 'package.json'); fs.readFile(packagePath, 'utf8', (err, data) => { if (err || !data) return; try { const pkg = JSON.parse(data); console.log(`${file}: ${pkg.version}`); } catch (e) {} }); }); }); ``` 将上述代码保存为 `list-modules.js` 并运行: ```bash node list-modules.js ``` 此脚本会逐个读取 `node_modules` 下的每个模块的 `package.json` 文件,并输出模块名称及其版本信息[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值