fs模块初识
在对nodejs进行学习时,首先要了解的就是fs文件模块。
fs模块就是文件系统模块,file system(文件系统) fs模块是node内置的核心模块,指nodejs 可以直接操纵一些文档。
介绍第一种操作
读取文件
readFile 可以对文件内容进行读取
首先我们需要对fs模块进行引入
let fs = require('fs');
利用require(’’)可以请求到node内置或引入的模块。
readFile操作的基本格式为
fs.readFile('url',function (err,data) {
console.log(data,err);
})
readFile中共有两个参数, fs.readFile(文件的路径,回调函数)。回调函数中的两个参数 err,data分别存放报错信息和读到的数据。
创建一个data.js,里面随便放一些数据
例如
let a = 10;
let b = 20;
创建readFile.js,里面写入
//请求fs模块
let fs = require('fs');
//读取文件
fs.readFile('./data.js',function (err,data) {
console.log(data,err);
})
运行文件后得到
<Buffer 6c 65 74 20 61 20 3d 20 31 30 3b 0d 0a 6c 65 74 20 62 20 3d 20 32 30 3b 0d 0a> null
可以发现data有数据,且err为null,说明读取成功。
Buffer
虽然上个例子中文件读取成功,但返回值是我们无法识别的值,而这个值为buffer值。
我们来看菜鸟教程中关于buffer的解释
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。
简单来讲,buffer就是为了处理二进制文件而存在的数据类型。
<Buffer 6c 65 74 20 61 20 3d 20 31 30 3b 0d 0a 6c 65 74 20 62 20 3d 20 32 30 3b 0d 0a>
buffer中的值为十六进制的值,如果想要看到buffer格式数据真正表示的值,可以通过toString()方法进行转换。
let fs = require('fs');
fs.readFile('./data.js',function (err,data) {
console.log(data.toString(),err);
})
运行文件后得到结果
let a = 10;
let b = 20;
null
知道了怎么把一个buffer格式数据转换为字符串类型,那么怎么将字符串类型转化为buffer格式?
Buffer.from(’’)
利用Buffer.from(’’)方法可以将字符串类型数据转化为buffer类型。
写入文件
介绍完读取文件,接下来学习如何写文件
利用writeFile(’’)即可向一个文件内部写入数据,格式为
fs.writeFile('filename','data',function(err){
console.log(err)
})
writeFile方法可与readFile方法配合使用来完成读取一个文件并写入到另一个文件中
fs.readFile('../1.txt',function(err,data){
fs.writeFile('2.txt',data,function(err){})
})
这段代码可以理解为读取上层目录的1.txt文件并将其内容保存为当前目录下的1.txt文件
删除文件
我们可以使用unlinkSync进行文件的删除。
fs.unlinkSync('filename')
使用方法为直接在函数里写文件名即可
创建文件夹
mkdirSync可以创建一个文件夹
fs.mkdirSync('')
删除指定的文件夹
fs.rmdirSync可以删除指定的文件夹
fs.rmdirSync('')
读取指定文件夹的数据
fs.readdir可以读取指定文件夹下有哪些数据
fs.readdir('F://Program Files (x86)',function(err,data){
console.log(err,data)
})
运行代码后可以看到
对文件夹和文件都进行了读取
读取文件信息
statSync可以读取文件的信息,包括创建时间,大小等
console.log(fs.statSync('D:/Windows 7 Documents/Desktop/1.mp4'));
判断文件是否存在
existsSync可以判断一个文件是否存在并返回布尔值,存在返回true,不存在返回false
console.log(fs.existsSync('./buffer1.js'));
修改文件路径
rename方法可以对文件路径进行修改,也可以修改文件名
//rename(老路径,新路径,回调函数)
//把原来的文件从老路径移到新路径 并且修改文件名
fs.rename('D:/Windows 7 Documents/Desktop/1.js','./buffer.js',function (err,data) {
console.log(err, data);
})
新文件文件名与老文件相同 = 更改文件路径
新文件文件名与老文件不同 = 更改文件名称
新文件文件名、路径与老文件文件名、路径不同 = 更改文件位置和名称