1.fs文件系统模块
fs模块是node.js官方提供的,用来操作文件的模块,他提供了一系列的方法和属性,来满足用户对文件的操作需求!
fs.readFlie() 方法 用来读取指定文件中的内容。
fs.wrtieFlie()方法,用来向指定的文件中写入内容。
如果需要在JS代码中,需要引入。 和java 导入类是类似的
const fs=require('rs')
1.1读取指定文件中的内容。
使用fs.readFlie() 语法格式。
fs.readFlie(path,[opitions],callback)
参数1 必选参数,字符串,表示文件的路径
参数2 可选参数,表示以什么编码格式来读取文件
参数3 必选参数,文件读取完成后,通过回调函数拿到读取的结果
常见的文件编码 ASCLL GB2312 GBK Unicode UTF-8
// 1. 导入 fs 模块,来操作文件
const fs = require('fs')
// 2. 调用 fs.readFile() 方法读取文件
// 参数1:读取文件的存放路径
// 参数2:读取文件时候采用的编码格式,一般默认指定 utf8
// 参数3:回调函数,拿到读取失败和成功的结果 err dataStr
fs.readFile('./files/11.txt', 'utf8', function(err, dataStr) {
// 2.1 打印失败的结果
// 如果读取成功,则 err 的值为 null
// 如果读取失败,则 err 的值为 错误对象,dataStr 的值为 undefined
console.log(err)
console.log('-------')
// 2.2 打印成功的结果
console.log(dataStr)
})
1.2写入指定文件
使用 fs.writeFile() 方法,可以向指定的文件中写入内容,语法格式如下:
fs.writeFile(file,data[,options],callback);
参数 1: 必选参数, 需要指定一个文件路径的字符串,表示文件的存放路径。
参数 2: 必选参数, 表示要写入的内容。
参数 3: 可选参数, 表示以什么格式写入文件内容, 默认值是 utf8。
参数 4: 必选参数, 文件写入完成后的回调函数。
2、fs.writeFile()的示例代码
案例:
// 1. 导入 fs 模块
const fs = require('fs')
// 2. 调用 fs.readFile() 读取文件的内容
fs.readFile('./成绩.txt', 'utf8', function(err, dataStr) {
// 3. 判断是否读取成功
if (err) {
return console.log('读取文件失败!' + err.message)
}
// console.log('读取文件成功!' + dataStr)
// 4.1 先把成绩的数据,按照空格进行分割
const arrOld = dataStr.split(' ')
// 4.2 循环分割后的数组,对每一项数据,进行字符串的替换操作
const arrNew = []
arrOld.forEach(item => {
arrNew.push(item.replace('=', ':'))
})
// 4.3 把新数组中的每一项,进行合并,得到一个新的字符串
const newStr = arrNew.join('\r\n')
// 5. 调用 fs.writeFile() 方法,把处理完毕的成绩,写入到新文件中
fs.writeFile('./files/成绩-ok.txt', newStr, function(err) {
if (err) {
return console.log('写入文件失败!' + err.message)
}
console.log('成绩写入成功!')
})
})
2.path路径模块
前言?处理路径动态拼接的问题。
在使用 fs 模块操作文件时, 如果提供的操作路径是以 ./ 或 ../ 开头的相对路径时,很容易出现路径动态拼接错误的问题。 为什么要处理。
原因:代码在运行的时候,会执行node命令时,所处的目录,动态拼接出被操作文件的完整路径
解决方案?在使用fs模块操作文件时,直接提供完整的路径,不要提交./或../开头的相对路径。从而防止路径动态拼接的问题。
fs.readFlie('./files/1.txt','utf8',function(err,dataStr){
if(err) return console.log('读取文件失败' + err.message)
console.log(dataStr)
})
// __dirname 表示当前文件所处的目录
fs.readFile(__dirname + './files/1.txt','utf8',function(err.dataStr{
if(err) return console.log('读取文件失败' + err.message)
console.log(dataStar)
}))
什么是Path 路径模块
path模块是Nods.js官方提供的,用来处理路径的模块,它提供了一系列的属性和方法来满足用户对路径的处理需求。
path.join() 方法。用来将多个路径片段拼接昵称一个完整的路径字符串
path.basename()方法 用来从路径字符中,将文件名解析出来
同时需要导入所需要支持的
const path = require('path')
2.1路径拼接 path.join语法格式
path.join([...paths]);
...paths<string> 路径片段的序列
返回值 <string>
const path = require('path');
const fs = require('fs');
// 注意: ../ 会抵消前面的路径
// const pathStr = path.join('/a', '/b/c', '../../', './d', 'e')
// console.log(pathStr) // \a\b\d\e
// fs.readFile(__dirname + '/files/1.txt')
fs.readFile(
path.join(__dirname, './files/1.txt'),
'utf8',
function (err, dataStr) {
if (err) {
return console.log(err.message);
}
console.log(dataStr);
}
);
注意:今后凡是涉及到路径拼接的操作,都要使用path.join()方法进行处理,不要直接使用+进行字符串的拼接。
2.2获取路径中的文件名
path.basename()方法 可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名,
path.basename(path[,ext])
path必选参数,表示一个路径的字符串
ext 可选参数,表示文件扩展名
返回 的是路径中的最后一部分。
实际:
const path = require('path');
// 定义文件的存放路径
const fpath = '/a/b/c/index.html';
const fullName = path.basename(fpath)
console.log(fullName)//输出 index.html
const nameWithoutExt = path.basename(fpath, '.html');
console.log(nameWithoutExt);//输出 index
2.3path.extname() 语法
使用path.extname()语法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的扩展名。
path.extname(path);
path 必须按参数 表示一个路径的字符串
返回 得到扩展名字字符串
实例 可以获取到index.html
const path = require('path')
//这是文件的存放路径
cont fpath= '/a/b/c/index.html'
cont text path.extname(fpath)
console.log(text)
3.http 模块
http模块是node js 官方提供的,用来创建web服务器的模块,通过http模块提供的http.createSever()方法,就能方便的把一台普通的电脑,变成一台web服务器。
如果希望使用http模块创建web服务器,,则需要先导入它
const http = require('http')
4.模块化
什么是模块化,模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程,对于整个系统来说,模块是可组合,分解和更换的单元。
同时 模块化带来的好处例如?
1.提高了代码的可复用性。
2.提高了代码的可维护性。
3.可实现按需加载。
4.1 模块化规范
1.使用什么样的语法来引用模块。
2.在模块中使用什么样的语法格式向外暴露成员
规范化模块的好处:大家都遵守同样的模块化规范写代码,降低了沟通的成本,极大方便了各个模块之间的相互调用。