异步方法最后一个是回调,回掉的第一个参数保留给错误
const fs = require('fs');
fs.readFile('./14_fs.js', 'utf8', (err, data) => {
// fs.readFile(文件路径, 格式, (错误, 数据)
if (err) {
throw err
}
console.log(data)
})
同步读取:不建议使用
const data = fs.readFileSync('./13_events2.js', 'utf8')
console.log(data);
写文件:
可以写文件,也可以写buffer
fs.writeFile('./text', 'this is test', {
encoding: 'utf8'
}, err => {
if (err) throw err
console.log('done!')
})
文件信息相关:state
fs.stat('./13_events2.js', (err, stats) => {
if (err) {
console.log('文件不存在');
return
}
console.log(stats.isFile())
// 是不是文件?
console.log(stats.isDirectory())
// 是不是文件夹?
console.log(stats)
})
输出结果如下:
$ node 14_fs.js
true
false
Stats {
dev: 2354241344,
mode: 33206,
nlink: 1,
uid: 0,
gid: 0,
rdev: 0,
blksize: undefined,
ino: 5066549580819254,
size: 632,
blocks: undefined,
atimeMs: 1527146062181.1772,
mtimeMs: 1527146905805.104,
ctimeMs: 1527146905805.104,
birthtimeMs: 1527146062181.1772,
atime: 2018-05-24T07:14:22.181Z,
mtime: 2018-05-24T07:28:25.805Z,
ctime: 2018-05-24T07:28:25.805Z,
birthtime: 2018-05-24T07:14:22.181Z }
更改文件名:rename
fs.rename('./text', './test.txt', err => {
if (err) throw err
console.log('done!');
})
删除文件:unlink
fs.unlink('./test.txt', err => {
if (err) throw err
console.log('done!');
})
查看文件夹内容:
fs.readdir('./', (err, file) => {
if (err) throw err
console.log(file);
})
创建文件夹:
fs.mkdir('test', err => {})
删除文件夹
如果不写回掉会报错如下
DeprecationWarning: Calling an asynchronous function without callback is deprecated.
fs.rmdir('./test')
监视文件夹的变化:
fs.watch('./',{
recursive: true
},(eventtype, filename) => {
console.log(eventtype, filename);
})
// watch(文件或者文件夹路径, opation(是否监听子文件),(变化的类型, 变化的名字))
readstream:流
const rs = fs.createReadStream('./14_fs.js');
// 创建一个流文件
rs.pipe(process.stdout)
// pipe是方向,往哪里导
// stdout控制台
写流文件
const ws = fs.createWriteStream('./test.txt')
const tid = setInterval(() => {
const num = Math.floor(Math.random() * 10)
if (num < 7) {
console.log(num)
ws.write(num + '')
} else {
clearInterval(tid)
ws.end()
}
}, 200)
ws.on('finish', () => {
console.log('done!');
})