nodejs文件读写
File System (fs文件系统)
- 得到文件与目录的信息:stat
- 创建一个目录:mkdir
- 创建文件并写入内容:writeFile,appendFile
- 读取文件的内容:readFile
- 列出目录的东西:readdir
- 重命名目录或文件:rename
- 删除目录与文件:rmdir,unlink
用代码展示一下文件file的操作:(首先注意一点,所有文件系统操作都具有同步和异步的形式,此文着重用同步方式;同步比异步多了个Sync)
(1)创建文件
const fs=require('fs');//首先引入fs文件系统内置模块
// 异步方式 文件名 添加内容 回调函数(异步处理)
fs.writeFile('file_one.txt','this is a litter file',function(err){
// do something
// 在node里面,有个错误优先原则,比如说这儿的第一个参数是error
// 比如说磁盘满了,没有创建成功
})
// 同步方式,不用写回调函数
fs.writeFileSync('file_two','this is the second file');
执行:
结果,在当前目录下新创建了两个文件:
(2)删除文件
const fs=require('fs');//首先引入fs文件系统内置模块
// 异步,参数:path文件路径 回调函数
fs.unlink('./file_one.txt',function(){
// do something
})
// 同步删除文件
fs.unlinkSync('./file_two.txt');
(3)修改文件的名字
fs.renameSync('log.txt', 'lognew.txt')
(4)追加内容
// 就是在文件最后添加内容
fs.appendFileSync('lognew.txt', 'gp18')
(5)文件内容的读取
let rs=fs.readFileSync('file_one.txt');
console.log(rs);//16进制buffer
console.log(rs.toString());//转换成字符串
(6)创建文件夹
// 注意不能重复创建,所以可以先判断文件是否创建了,如果不存在就创建(应该是看返回值,存在返回true,不存在返回false,所以要加!非符号,取反操作)
if(!fs.existsSync('./folder')){
fs.mkdirSync('./folder');
}
fs.writeFileSync('./folder/file000.txt','some content');
(7)删除文件夹
// 直接删除,如果文件夹不为空,就会报错
fs.rmdirSync('./folder');
(8)小例子:删除文件(文件夹、单独文件)
const fs=require('fs');//首先引入fs文件系统内置模块
// 那么现在文件夹内有内容,该怎么操作才能把这个文件夹删除呢?
function delfiles(src){
// 读取文件的状态信息
var rs=fs.statSync(src);
if(rs.isDirectory()){
// 读取文件夹下的数据,返回一个数组
var files=fs.readdirSync(src);
files.forEach((item,index)=>{
let curPath=src+'/'+item;
// 判断子项里的是文件还是文件夹
if(fs.statSync(curPath).isDirectory()){
delfiles(curPath);
}else{
fs.unlinkSync(curPath);
}
})
// 这样以上文件夹都是空文件夹了,再删除
fs.rmdirSync(src);
}else{
fs.unlinkSync(src);
}
}
delfiles('./folder')
删除前、删除后:
大师兄用三句话,搞定了这个小例子:
json的基本操作
// (1)写入json文件
let user={ name:'sky',age:18}
// 想要把user里的数据存进data.json里
fs.writeFileSync('data.json',JSON.stringify(user));
// (2)读取json里的内容
// 在node里面,卡伊把一个json文件当成一个模块引入进来
var data=require('./data.json');
console.log(data);
// (3)修改json里的内容
data.address='beijing';
fs.writeFileSync('data.json',JSON.stringify(data));
Stream
官方文档
读取文件流
可读流的事件
可写的文件流
pipe链式使用
pipe
const fs = require('fs');
const zlib = require('zlib');
fs.writeFileSync('log.txt', 'gp18');
fs.createReadStream('log.txt')
.pipe(zlib.createGzip())
.pipe(fs.createWriteStream('log.txt.gzip'));
还没有评论,来说两句吧...