前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的。包括语音识别、机器翻译等从基础到实战都有,很详细,分享给大家。大家及时保存,说不定啥时候就没了。
fs模块是 Node.js官方提供的,用来操作文件的模块(读取/写入)
。它提供了一些属性和方法,用来满足用户对文件的操作。
fs.readFile(path, [options], callback),
fs.writeFile(file, data, [options], callback)
如果在js代码中,使用fs模块操作文件,则需要先使用require导入
const fs = require('fs');
使用 fs.readFile() 方法读取文件
// 1、导入fs模块,来操作文件
const fs = require('fs');
// 1、调用fs.readFile()方法读取文件
// 参数一:读取文件的存放路径
// 参数二:读取文件时采用的编码格式,一般默认指定 utf8
// 参数三:回调函数,拿到读取成功和失败的结果,err,dataStr
fs.readFile('./files/files.txt', 'utf8', (err, dataStr) => {
// 如果读取成功,则 err 的值为 null
// 如果读取失败,则 err 的值为错误对象,dataStr的值为undefind
if (err) {
// 例如readFile路径错误就会进来
console.log(`读取文件失败${err.message}`);
}
console.log(`读取文件成功${dataStr}`);
})
// 运行,终端输入node,空格,接着输入要执行文件名称的前两个字符。使用Tab键补全,回车,就可以了
使用 fs.createFile() 方法写入文件
// 导入fs模块
const fs = require('fs');
// 调用fs.writeFile()方法写入内容
// 参数一:存放写入内容的文件,没有的话就在该路径下创建
// 参数二:要写入的内容
// 参数三:编码格式(可以省略不写,默认utf8)
// 参数四:回调函数
const writeContent = '我是通过fs.writeFiles()函数写入的内容。'
fs.writeFile('./files/writeFile.txt', writeContent, 'utf8', (err, res) => {
// 如果文件写入成功,则err的值为null
// 如果文件写入失败,则err的值是一个错误对象
if (err) {
console.log(`写入文件成功${err.message}`);
}
console.log(`写入内容成功${res}`);
})
案例-成绩整理
/**
* 需求
* 将num里的数据,= 换成 :,并且换行
* 将新数据存放到新建文件夹newNum里
*/
const fs = require('fs');
fs.readFile(__dirname + '/files/num.txt', 'utf8', (err, res) => {
if (err) {
console.log(`读取失败${err.message}`);
}
const arr = res.split(' ');
let newArray = [];
arr.forEach(item => {
newArray.push(item.replace('=', ':'))
})
const dataStr = newArray.join('\n');
// console.log(`读取并整理文件${dataStr}`);
addFile(dataStr)
});
const addFile = (str) => {
fs.writeFile(_dirname + '/files/newNum.txt',str, (err, res) => {
if (err) {
console.log(`新文件创建失败${err}`);
}
console.log(`新文件创建成功${res}`);
});
};
路径问题解决
使用 __dirname来动态设置当前文件所在目录
const fs = require('fs');
// 终端使用cd进入其他文件,再node执行该文件,就会报错
// 因为cd进去表示当前文件所处目录,然后拼接上'./files/files.txt'相对路径,导致位置错误
// 出现路径拼接错误的问题,是因为提供了 ./ 或 ../ 开头的相对路径
// 如果要解决这个问题,可以直接提供一个完整的文件存放路径就行
// 最好的解决方案是提供一个动态的当前文件所处目录的变量
// fs.readFile('./files/files.txt', 'utf8', (err, res) => {
// console.log(err);
// console.log(res);
// })
// __dirname 表示当前文件所处目录
fs.readFile(__dirname + '/files/files.txt', 'utf8', (err, res) => {
console.log(err);
console.log(res);
})