前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从0到1学习nodejs(1)

从0到1学习nodejs(1)

作者头像
y191024
发布2024-06-17 15:16:44
710
发布2024-06-17 15:16:44
举报

终于有点时间学习啦,今天是美好的周六,早上早起去了一趟健身房,然后去喝了免费的霸王茶姬!万里木兰很不错,推荐。又要开始学习啦,家人们,学习永无止境!!!

之前学的node也忘得差不多了,而且感觉学的不扎实,因为学了就忘,表明自己没有真正的理解到,所以要来一次0到1的学习😗😎。

夏天终于来了,好热好热。

这一篇拖了好久了因为最近工作真的太忙碌了,每天回家累的不行只想睡觉!

首先,我们要清楚一个概念,nodejs并不是一种编程语言,官方的说法是: Nodejs是一个开源的,跨平台的JavaScript运行环境

Nodejs的作用

命令行

命令的结构:

常用命令:

小结:

嗯这就是比较基本的命令行,如果是dir /s那就是输出这个文件夹下的所有文件(包括子目录)

Nodejs注意事项

在nodejs中不能使用DOM和BOM的api

在浏览器中的JavaScript

nodejs中的JavaScript

像这些都是不可以的

但是可以使用global和globalThis顶级对象

计算机基本知识

下面老师又介绍了一些计算机的基础知识,比如一个软件运行的基本流程。

进程和线程

fs模块

fs是file system的简称,意为文件系统,这是nodejs中比较重要的模块,现在我们来学习一下

文件操作

writeFile(异步)

首先我们创建一个文件

代码语言:javascript
复制
const fs = require("fs");
fs.writeFile("./iWrite", "这是我添加的内容", (err) => {
  if (err) {
    console.log("写入失败");
    return;
  } else {
    console.log("写入成功");
  }
});

OK这就写入成功了,如果再次执行,会覆盖之前的内容

writeFileSync(同步)

既然前面的writeFile是异步的,那么也有相应的同步方法,并且这个方法是没有回调函数的

代码语言:javascript
复制
const fs = require("fs");
fs.writeFileSync("./test", "同步写入");

前面的方法会直接覆盖掉文件中的内容,下面的方法是追加写入:

appendFile(异步)

代码语言:javascript
复制
const fs = require("fs");
fs.appendFile("./iWrite", "这是追加的内容", (err) => {
  if (err) {
    console.log(err);
  } else {
    console.log("写入成功");
  }
});

执行后:

其实前面的writeFile也可以实现追加,但是要添加配置flag为"a"

代码语言:javascript
复制
const fs = require("fs");
fs.writeFile(
  "./iWrite",
  "\r\n这是writeFile方法追加的内容",
  {
    flag: "a",
  },
  (err) => {
    if (err) {
      console.log(err);
    } else {
      console.log("写入成功");
    }
  }
);

追加的操作可以用于日志

createWriteStream流式写入

代码语言:javascript
复制
const fs = require("fs");
const ws = fs.createWriteStream("./日记");
ws.write("2/1 今天 xxxx \n");
ws.write("2/2 ...xxxx \n");
ws.write("2/3 ...xxxx \n");
ws.write("2/4 ...xxxx \n");
ws.close(); // 可加可不加

文件写入的场景

文件读取

readFile

这个接收三个参数,其中回调函数接收error和读取到的数据,这个数据是一个buffer类型,可以使用toString转成字符。

代码语言:javascript
复制
const fs = require("fs");
fs.readFile("./日记", (err, data) => {
  if (err) {
    throw Error(err);
  } else {
    console.log("成功读取");
    console.log(data.toString());
  }
});

文件读取的场景

流式读取

流式读取就是将内容一块一块的读取,每读取一块都会执行一次回调函数

代码语言:javascript
复制
const fs = require("fs");
const rs = fs.createReadStream("../dic/img.png");
rs.on("data", (chunk) => {
  console.log(chunk);
});

复制文件

方式一:

代码语言:javascript
复制
const fs = require("fs");
const data = fs.readFileSync("../dic/setup.exe");
fs.writeFileSync("../dic/setup-2.exe", data);

方式二:流式

代码语言:javascript
复制
// 流式读取复制
const fs = require("fs");
const rs = fs.createReadStream("../dic/setup.exe");
const ws = fs.createWriteStream("../dic/setup-3.exe");
rs.on("data", (chunk) => {
  ws.write(chunk);
});

可以看到都是可以的

还有一种方式是比较少见的

代码语言:javascript
复制
rs.pipe(ws)

文件的重命名和移动

rename(原路径,新路径,回调函数)

代码语言:javascript
复制
// 重命名
const fs = require("fs");
fs.rename("./h.txt", "./hhh.txt", (err) => {
  if (err) {
    console.log(err);
    return;
  } else {
    console.log("重命名成功");
  }
});

// 移动
const fs = require("fs");
fs.rename("./hhh.txt", "../dic/hhhh.txt", (err) => {
  if (err) {
    console.log(err);
    return;
  } else {
    console.log("移动成功");
  }
});

删除文件

unlink(删除路径,回调函数)

代码语言:javascript
复制
const fs = require("fs");
fs.unlink("./test", (err) => {
  if (err) {
    console.log("删除失败");
    return;
  } else {
    console.log("删除成功");
  }
});

rm(删除路径,回调函数)

代码语言:javascript
复制
const fs = require("fs");
fs.rm("./日记", (err) => {
  if (err) {
    console.log("删除失败");
    return;
  } else {
    console.log("删除成功");
  }
});

文件夹操作

创建文件夹

代码语言:javascript
复制
const fs = require("fs");
fs.mkdir("./newDic", (err) => {
  if (err) {
    console.log(err);
    return;
  } else {
    console.log("创建成功");
  }
});

还可以递归创建,需要多加一个属性

代码语言:javascript
复制
const fs = require("fs");
fs.mkdir("./a/b/c", { recursive: true }, (err) => {
  if (err) {
    console.log("创建失败");
    return;
  } else {
    console.log("创建成功");
  }
});

读取文件夹

readdir(文件夹路径, 回调函数(错误, 返回的文件名))

代码语言:javascript
复制
const fs = require("fs");
fs.readdir("../dic", (err, file) => {
  if (err) {
    console.log(err);
    return;
  } else {
    console.log(file);
  }
});

删除文件夹

rmdic(文件路径, 回调函数)

代码语言:javascript
复制
const fs = require("fs");
fs.readdir("../dic", (err, file) => {
  if (err) {
    console.log(err);
    return;
  } else {
    console.log(file);
  }
});

当然删除也有递归删除

代码语言:javascript
复制
const fs = require("fs");
fs.rmdir("./a", { recursive: true }, (err) => {
  if (err) {
    console.log("删除失败");
  } else {
    console.log("删除成功");
  }
});

但是终端显示rmdir的递归删除会被遗弃,不推荐使用,推荐我们使用rm的方法

代码语言:javascript
复制
fs.rm("./a", { recursive: true }, (err) => {
  if (err) {
    console.log(err);
  } else {
    console.log("删除成功");
  }
});

查看资源状态

stat方法

代码语言:javascript
复制
const fs = require("fs");
fs.stat("./hello.js", (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});

其中还有两个方法,可以判断这个资源是文件还是文件夹

分别是 isFile()isDirectory()

代码语言:javascript
复制
const fs = require("fs");
fs.stat("./hello.js", (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data.isFile()); // true
    console.log(data.isDirectory()); // false
  }
});

绝对路径

__dirname保存的是所在的文件的所在目录的绝对路径

注意看要怎么写才对

批量重命名

一定要注意,文件中的路径,都是相对于终端来说的,千万不要写错

总结:

文件读取

文件读取顾名思义,就是通过程序从文件中取出其中的数据,我们可以使用如下几种方式:

方法

说明

readFile

异步读取

readFileSync

同步读取

createReadStream

流式读取

readFile 异步读取

语法: fs.readFile(path[, options], callback) 参数说明:

  • path 文件路径
  • options 选项配置
  • callback 回调函数

返回值:undefined

本文由“壹伴编辑器”提供技术支持

readFileSync 同步读取

语法: fs.readFileSync(path[, options])

参数说明:

  • path 文件路径
  • options 选项配置

返回值:string | Buffer

本文由“壹伴编辑器”提供技术支持

createReadStream 流式读取

语法: fs.createReadStream(path[, options]) 参数说明:

  • path 文件路径
  • options 选项配置

返回值:Object

本文由“壹伴编辑器”提供技术支持

文件写入

文件写入就是将 数据 保存到 文件 中,我们可以使用如下几个方法来实现该效果

方法

说明

writeFile

异步写入

writeFileSync

同步写入

appendFile /appendFileSync

追加写入

createWriteStream

流式写入

writeFile 异步写入

语法: fs.writeFile(file, data[, options], callback) 参数说明:

  • file 文件名
  • data 待写入的数据
  • options 选项设置 (可选)
  • callback 写入回调

返回值:undefined

本文由“壹伴编辑器”提供技术支持

writeFileSync 同步写入

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

参数与 fs.writeFile 大体一致,只是没有 callback 参数

返回值:undefined

本文由“壹伴编辑器”提供技术支持

appendFile / appendFileSync 追加写入

appendFile 作用是在文件尾部追加内容,appendFile 语法与 writeFile 语法完全相同 语法:

  • fs.appendFile(file, data[, options], callback)
  • fs.appendFileSync(file, data[, options])

返回值:二者都为 undefined

本文由“壹伴编辑器”提供技术支持

createWriteStream 流式写入

语法: fs.createWriteStream(path[, options]) 参数说明:

  • path 文件路径
  • options 选项配置( 可选 )

返回值:Object

本文由“壹伴编辑器”提供技术支持

文件移动与重命名

在 Node.js 中,我们可以使用 rename 或 renameSync 来移动或重命名 文件或文件夹 语法:

  • fs.rename(oldPath, newPath, callback)
  • fs.renameSync(oldPath, newPath)

参数说明:

  • oldPath 文件当前的路径
  • newPath 文件新的路径
  • callback 操作后的回调

本文由“壹伴编辑器”提供技术支持

文件删除

在 Node.js 中,我们可以使用 unlink 或 unlinkSync 来删除文件 语法:

  • fs.unlink(path, callback)
  • fs.unlinkSync(path)

参数说明:

  • path 文件路径
  • callback 操作后的回调

本文由“壹伴编辑器”提供技术支持

文件夹操作

借助 Node.js 的能力,我们可以对文件夹进行 创建 、 读取 、 删除 等操作

方法

说明

mkdir / mkdirSync

创建文件夹

readdir / readdirSync

读取文件夹

rmdir / rmdirSync

删除文件夹

mkdir创建文件夹

在 Node.js 中,我们可以使用 mkdir 或 mkdirSync 来创建文件夹 语法:

  • fs.mkdir(path[, options], callback)
  • fs.mkdirSync(path[, options])

参数说明:

  • path 文件夹路径
  • options 选项配置( 可选 )
  • callback 操作后的回调

本文由“壹伴编辑器”提供技术支持

readdir 读取文件夹

在 Node.js 中,我们可以使用 readdir 或 readdirSync 来读取文件夹 语法:

  • fs.readdir(path[, options], callback)
  • fs.readdirSync(path[, options])

参数说明:

  • path 文件夹路径
  • options 选项配置( 可选 )
  • callback 操作后的回调

本文由“壹伴编辑器”提供技术支持

rmdir 删除文件夹

在 Node.js 中,我们可以使用 rmdir 或 rmdirSync 来删除文件夹 语法:

  • fs.rmdir(path[, options], callback)
  • fs.rmdirSync(path[, options])
  • 参数说明:
  • path 文件夹路径
  • options 选项配置( 可选 )
  • callback 操作后的回调

本文由“壹伴编辑器”提供技术支持

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件读取
    • readFile 异步读取
    • 本文由“壹伴编辑器”提供技术支持
      • readFileSync 同步读取
        • createReadStream 流式读取
        • 文件写入
          • writeFile 异步写入
            • writeFileSync 同步写入
              • appendFile / appendFileSync 追加写入
                • createWriteStream 流式写入
                • 文件移动与重命名
                • 文件删除
                • 文件夹操作
                  • mkdir创建文件夹
                    • readdir 读取文件夹
                      • rmdir 删除文件夹
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档