博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NodeJs的安装与简介及文件的读取、写入、追加(FileSystem模块)
阅读量:3960 次
发布时间:2019-05-24

本文共 2970 字,大约阅读时间需要 9 分钟。

NodeJs简介

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

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

NodeJs的安装

在官网进行下载:

在这里插入图片描述

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

在这里插入图片描述

安装完成之后,创建两个文件夹node_cachenode_global 。设置全局安装目录和缓存目录,执行命令

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

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

在这里插入图片描述

在这里进入之后,就可以直接在里面执行JavaScript代码,需要注意的是,按压两次ctrl+c退出,

但是在这里基本上不会直接在这个黑窗口进行编写js代码,js代码基本上在编辑器当中编写,如下图,js文件编写之后,在当前目录打开cmd,执行命令 node 文件名 回车查看输出结果。

在这里插入图片描述

读取文件

使用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 文件名,如下图所示:就把文件内容读取出来了

在这里插入图片描述

写入文件

既然可以进行读取文件内容,那同样的可以进行文件写入,对应的方法解释如下:可自行在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当中还提供了一个 进行执行这个文件内容追加的操作。语法如下:
在这里插入图片描述
代码实现如下所示:

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

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

在这里插入图片描述

文件的属性

在这里还是提供了一个 用于访问这个文件的属性值。

在这里插入图片描述
代码实现如下所示:(在前面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处理的时候也同样的加上这个闭包进行处理即可。

转载地址:http://bzqzi.baihongyu.com/

你可能感兴趣的文章
drbd
查看>>
网络 IP
查看>>
网络路由
查看>>
网络 tcp 性能 可靠
查看>>
网络 https 握手
查看>>
去掉调试信息
查看>>
lsof 使用
查看>>
golang获取本机地址
查看>>
date 使用
查看>>
ipcalc
查看>>
网络 linux 禁止 ping
查看>>
ELF 格式详解
查看>>
chromium 使用
查看>>
linux 检测虚拟机类型
查看>>
go - 运行时:内存不足
查看>>
top 使用
查看>>
Linux Netlink通信机制详解
查看>>
rsync 远程同步
查看>>
nano使用
查看>>
c函数
查看>>