Nodejs - fs模块

fs模块

fs文件系统用于对系统文件及目录进行读写操作。

文档地址:fs

常用方法:

const fs = require('fs');

// 检测目录或文件
fs.stat('./package.json', (err, data) => {
    if (err) {
        console.log(err);
        return;
    }
    console.log(`是文件:${data.isFile()}`);
    console.log(`是目录:${data.isDirectory()}`);
})

// 创建目录(已存在,不可重复创建)
// mkdir(path[, mode], callback) mode 权限, 默认777
// fs.mkdir('./css', (err, data) => {
//     if (err) {
//         console.log(err);
//         return;
//     }
//     console.log('success');
// })

// 创建写入文件(已存在,会覆盖)
// fs.writeFile('./html/index.html', `<html><head></head><body></body></html>`, (err) => {
//     if (err) {
//         console.log(err);
//         return;
//     }
//     console.log('success');
// })

// 追加文件(默认存在会继续追加)
// 'a+': 打开文件用于读取和追加。 如果文件不存在,则创建该文件。
// 'ax+': 类似于 'a+',但如果路径存在,则失败。
fs.appendFile('./css/index.css', 'body{color:red}', { flag: 'ax+' }, (err) => {
    if (err) {
        console.log(err);
        return;
    }
    console.log('append success');
})

// 读取文件 // 'w+': 打开文件用于读取和写入。 如果文件不存在则创建文件,如果文件存在则截断文件。{ flag: 'wx+' },
fs.readFile('./html/index.html', (err, data) => {
    if (err) {
        console.log(err);
        return;
    }
    // console.log('data: ', data);// Buffer
    console.log(`文件信息:${data}`);
})

// 读取目录
fs.readdir('../fs', (err, data) => {
    if (err) {
        console.log(err);
        return;
    }
    console.log('目录信息: ', data);
    console.log(`目录信息:${data}`);
})

// 重命名 / 移动文件
fs.rename('./html/bb.html', './css/aa.html', (err) => {
    if (err) {
        console.log(err);
        return;
    }
    console.log('rename success ');
})

// 删除目录(没有目录会出错)
fs.rmdir('./aaa', (err) => {
    if (err) {
        console.log(err);
        return;
    }
    console.log('rmdir success ');
})

// 删除文件(没有文件会出错))
fs.unlink('a.txt', (err) => {
    if (err) {
        console.log(err);
        return;
    }
    console.log('文件已被删除');
});

笔记代码:

- 文件写入:
	fs
		open/openSync(同步写入)
		write/writeSync
		close/closeSync
	简单文件写入:
		fs.wirteFile(filepath, data [, options], callback)
		fs.wirteFileSync(filepath, data [, options])
		options规则:
		a 追加;a+ 读取追加,没有创建;
		r+ 读写;rs+同步模式下读写;
		w+ 读写截断(覆盖),没有创建;	wx+ 读写,存在则打开失败。
		
	fs.wirteFile("hello.txt", "hello文本", { flag: a }, function(err) {  console.log( '追加文本。。。' )  } )
	
	流式文件写入:
		var ws = fs.createWriteStream(path, [, options])
		ws.once ( 'open', 'function(){  })
		ws.once ( 'close', 'function(){  })
		ws.write('sssssss');
		ws.write('ssssssssssssssaaa');
		ws.end();

	- 文件读取:
	简单: fs.readFile(path [, options], callback)	// 回调函数返回buffer数据
		fs.readFileSync(path [, options])

	流式:大文件,可分多次将文件读取到内存(一次读65536字节)
		var rs = fs.createReadStream(path, [, options])
		ws.once ( 'open', 'function(){  })
		ws.once ( 'close', 'function(){  })
		1// 若要读取可读流的数据,必须为可读流绑定data事件,然后自动读取
		rs.on('data', function(data) { console.log('data为读取到的数据': data); })
		2var ws = fs.createWriteStream(path, [, options])
		rs.pipe(ws);

流式操作:

// 流式操作
// createReadStream
const fs = require('fs');
let crs = fs.createReadStream('./package.json');
let data = '';
let count = 0;
crs.on('data', (chunk) => {
    data += chunk;
    count++;
})
crs.on('end', () => {
    console.log(data);
    console.log(count);
})
crs.on('error', (err) => {
    console.log(err);
})

// createWriteStream
let cws = fs.createWriteStream('./1.txt');
let str = '';
for (let i = 0; i < 100; i++) {
    str += '我是代谢的文件..'
}
cws.write(str);
cws.end(); // 标记文件末尾
cws.on('finish', () => {
    console.log('success');
})

// 管道:rs->ws
let rs = fs.createReadStream('./package.json');
let ws = fs.createWriteStream('./pipe.txt');
rs.pipe(ws);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值