操作文件是必须引入文件读写的”仓库‘’
var fs = require('fs');
新增一个文件:
fs.writeFileSync("write.txt","readme");//同步写文件的方法
删文件的方法:
fs.unlinkSync("readme.txt");//同步的方法删除文件
注意:上面的两种增删文件的方式为同步执行,即代码按行执行,文件没有读取完不会去执行下一段代码
异步增加文件的操作:
fs.writeFile('./stuff/readme.txt','1111',function(){
console.log('copy success');
})
异步删除文件:
fs.unlink("write.txt",function(){
console.log("delete write.txt file");
})//异步删除的方法
函数写法上异步与同步的函数就是少了Sync(同步),但实际执行时与同步执行有很大不同,异步是先执行其他的代码,等到空闲时再去执行文件读取,这样避免了因i/o阻塞导致的各种问题
读文件的方法:
var readme = fs.readFile("readme.txt","utf8",function(err,data){
fs.writeFile("write.txt",data,function(){
console.log("write me has finish")
})
console.log(data);
});//读文件
注:这里是将a文件的内容读完写到b文件里去了
新增文件夹的方法:
fs.mkdir('stuff',function(){//必须要用异步的函数才可以生成目录
fs.readFile("write.txt",'utf8',function(err,data){
fs.writeFile('./stuff/readme.txt',data,function(){
console.log('copy success');
})
})
});//新建目录
注,这里新建一个文件夹stuff,然后使用读写的方法往里面添加了一个文件
删除文件夹:
fs.rmdirSync('stuff');//删除目录
使用流读取文件
var myRead = fs.createReadStream(__dirname+'/write.txt','utf8');
var data = '';
myRead.on('data',function(chunk){
data+=chunk;
console.log('new chunk received');
console.log(chunk);
})
myRead.on('end',function(){
console.log(data);
})
编码方式还可以写到下方
var myRead = fs.createReadStream(__dirname+'/write.txt');
myRead.setEncoding('utf8');
用流的方式写一个文件:
var myWriteStream = fs.createWriteStream(__dirname+'/writeme.txt');
myWriteStream.write('chunk');
注:这里创建一个writeme的文件,写入的东西只有chunk,在函数里赋值也可以写入其他东西
也可以这样写
var myWriteStream = fs.createWriteStream(__dirname+'/writeme.txt');
var writedata = 'hello';
myWriteStream.write(writedata);
myWriteStream.end();
myWriteStream.on('finish',function(){
console.log('finish');//设置监听方法,结束后调用
})
可以用管道的方式创建文件
var myRead = fs.createReadStream(__dirname+'/write.txt');
var myWriteStream = fs.createWriteStream(__dirname+'/writeme.txt');
myRead.pipe(myWriteStream);