写入文件
const fs = require('fs')
fs.writeFile('./resources/read.txt', '这是文字', 'utf8', function(erro) {
if (!erro) {
console.log('写入成功')
} else {
console.log('写入失败')
}
})
读取文件
const fs = require('fs')
fs.readFile('/resources/jsonData.json', 'utf8', function(erro, dataStr) {
if (erro) {
console.log('读取文件失败')
}else {
console.log('读取成功')
console.log(dataStr)
}
})
路径问题
使用node执行时候,fs模块使用相对路径(./, …/), fs模块查找是node执行目录加上相对路径,如果node执行目录与执行的js不在同一目录就会出现拼接错误,
例:目录d:\test\nodejs\index.js
fs.readFile('./resources/jsonData.json', 'utf8', function(erro, dataStr) {
console.log(dataStr)
})
- 执行目录:d:\test\nodejs\index.js
- 执行:d:\test\nodejs>node index.js
-
fs查找路径为:d:\test\nodejs\resources\jsonData.json
-
- 回退路径执行node, d:\test>node ./nodejs/index.js
-
fs查找路径为 :d:\test\resources\jsonData.json
-
解决办法使用绝对路径
-
js模块自带属性__dirname(E:\测试实例\静态\nodejs)当前文件的绝对路径(目录), __filename(e:\测试实例\静态\nodejs\readFile.js)当前文件包含路径
-
使用内置模块path.join()拼接
const path = require('path') //路径拼接方法中,一个../抵消前面一个路径最多抵消前面到盘符后边的不变 const pathStr = path.join(__dirname, '/a', '/b/c', '../', './d', 'e') console.log(pathStr )//(e:\测试实例\静态\nodejs\a\b\d\e) //如果多写几个../最后会成为(e:\d\e)
-
获取路径后的文件名path.basename(),获取后缀path.extname()
const path = require('path') const UsePath = 'a/b/c/index.html' const pathBaseName = path.basename(UsePath) //index.html const pathBaseName = path.basename(UsePath, '.html') //index const pathBaseName = path.basename(UsePath, '.txt') //index.html //获取后缀 const pathExtName = path.extname(UsePath) //.html
关于写入文件
fs.writeFile(‘’)只能创建文件不能创建路径,同时只能是覆盖内容