Node.js处理文件或文件夹

操作文件是必须引入文件读写的”仓库‘’

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);

猜你喜欢

转载自blog.csdn.net/u013455430/article/details/88633049