NodeJs的安装与简介及文件的读取、写入、追加(FileSystem模块)

NodeJs简介
  • Node是一个基于 Chrome V8引擎的JavaScript运行环境。
  • Mode不是一种独立的语言、Node 不是JavaScript 框架。
  • Node是一个除了浏览器之外的、可以让JavaScript运行的环境

Node.js是一个让javaScript运行在服务端的开发平台,是使用事件驱动,异步非阻塞I/O .单线程,跨平台的JS运行环境:

NodeJs的安装

在官网进行下载:https://nodejs.org/en/

在这里插入图片描述
下载完成后双击进行安装,默认设置即可(修改一下安装的地址)。安装完成之后在安装的地址下面有一个node.exe文件,双击打开。或者在cmd当中输入node回车也是相同的。

在这里插入图片描述
安装完成之后,创建两个文件夹node_cachenode_global 。设置全局安装目录和缓存目录,执行命令

npm config set cache F:\学习课程\前端\NodeJS\install\node_cache
npm config set prefix F:\学习课程\前端\NodeJS\install\node_global

后面的路径根据自己的nodejs安装的路径进行调整。

在这里插入图片描述

在这里进入之后,就可以直接在里面执行JavaScript代码,需要注意的是,按压两次ctrl+c退出,
但是在这里基本上不会直接在这个黑窗口进行编写js代码,js代码基本上在编辑器当中编写,如下图,js文件编写之后,在当前目录打开cmd,执行命令 node 文件名 回车查看输出结果。

在这里插入图片描述

读取文件

使用filesystem文件系统进行简单的测试,使用文件读取这个方法 filesystem 使用readfile方法,方法具体如下图所示

在这里插入图片描述
而是用js代码,先使用一个const 定义一个变量,依赖于fs这个api。使用readfile方法进行读取。打开相同路径下的file.txt这个文件。

const fs = require('fs')

fs.readFile("file.txt", 'utf-8',(err, data) => {
	if (err) throw err;
	console.log(data)
})

运行这个js文件,使用 node 文件名,如下图所示:就把文件内容读取出来了

在这里插入图片描述

写入文件

既然可以进行读取文件内容,那同样的可以进行文件写入,FileWrite文件写入方法对应的方法解释如下:可自行在api当中查看,
在这里插入图片描述
在这里我们可以进行简化:方法的参数分别为:写入的文件名、写入的内容、编码格式(可省略)、回调函数。

const fs = require('fs')

fs.writeFile("./file.txt", "this is write text", function(err) {
	if (!err) {
		console.log("success")
	} else {
		console.log(err)
	}
})

之后我们在node下进行运行这个js文件,以及打开file.txt文件查看是否写入进去。

在这里插入图片描述

文件内容覆盖

在这里写入文件会把文件原先有的内容进行覆盖掉,这就出现一个问题,一般来说会要求文件内容进行追加:简单基本来说我们使用前面两个函数进行编写,先使用readFile进行读取数据,再使用WriteFile进行写入,代码如下:

const fs = require('fs')

fs.readFile("file.txt", 'utf-8', (err, data) => {

	data += " hello changsha .";

	console.log("read");

	fs.writeFile("./file.txt", data, function(err) {
		if (!err) {
			console.log("success")
		} else {
			console.log(err)
		}
	})

})

在node下运行这个js文件

在这里插入图片描述
除了使用这个方法进行追加,在nodejs当中还提供了一个appendFile() 方法 进行执行这个文件内容追加的操作。语法如下:
在这里插入图片描述
代码实现如下所示:

const fs = require('fs')

fs.appendFile('file.txt', 'this is appendfile function', (err) => {
	if (!err) {
		console.log("append success!")
	}
})

在node下运行这个js文件:查看输出,并且在文件当中查看内容是否已经追加上去。

在这里插入图片描述

文件的属性

在这里还是提供了一个stat()方法 用于访问这个文件的属性值。
在这里插入图片描述
代码实现如下所示:(在前面dir方法的基础上添加这个stat方法。)

var fs = require('fs')

fs.readdir('./', 'utf8', (err, data) => {
	//console.log(data)
	fs.stat(data[0], (err, data) => {
		console.log(data)
	})
})

在node下面运行这个项目:可以看到有很多的内容被打印出来,这些就是这个文件的属性内容。

在这里插入图片描述
但是在这里存在一个问题,当我们对一个文件夹先使用readdir获取所有文件的文件名,之后再使用stat方法进行获取数据,实现代码如下:

var fs = require('fs')

fs.readdir('./', 'utf8', (err, data) => {
	//console.log(data)
	for (var i = 0; i < data.length; i++) {
		fs.stat(data[i], (err, data) => {
			console.log(data[i])
		})
	}
})

这段代码逻辑上没有问题,问题在于在这里的回调函数不一定会执行到,在前面执行代码块的时候,不会停在那里等这个回调函数执行,这个时候的i的值会发生改变,所以我们进行打印输出之后可以看到返回值都是undefined。

在这里插入图片描述
怎样解决这个问题呢,我们可以使用到闭包。或者可以看到在一个js文件当中进行for循环,使用一个计时器进行延迟处理:

var arr = ['a', 'b', 'c']

for (var i = 0; i < arr.length; i++) {
	setTimeout(function() {
		console.log(arr[i])
	}, 1000)
}

运行这个js文件,问题还是一样的,打印出来的值依旧是undefined。

在这里插入图片描述
使用一个闭包,修改代码如下:

for (var i = 0; i < arr.length; i++) {
	(function(i) {
		setTimeout(function() {
			console.log(arr[i])
		}, 1000)
	})(i)
}

运行这个js文件,可以看到这个时候arr[i]的值就可以被打印出来。

在这里插入图片描述
所以在前面对stat进行for处理的时候也同样的加上这个闭包进行处理即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Modify_QmQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值