node笔记-1-fs文件系统的学习

226 阅读1分钟
const fs = require('fs')

1 同步文件写入 (日常不会用)

const fd = fs.openSync('hello.text', 'w')
fs.writeSync(fd,'你好呀')
fs.closeSync(fd)

2 异步文件写入 (日常不会用)

fs.open('hello.text','w',function(err,fd){ 
    if(err) console.log(err);
    fs.write(fd,'异步写入',function(err){
        fs.close(fd,function(err){
            console.log('写入关闭')
        })
    })
})

3简单文件写入

注意:简单文件写入属于一次性写入,需要提前预留内存大小,容易导致内存溢出,不适合大文件写入

// fs.writeFile源码里面做了 open,write,close这三个步骤
// 注意:默认写入的数据会全部覆盖原本的数据,如果要追加内容可以添加{flags:'a'},默认为{flag:'w'}

fs.writeFile('hello.text','简单文件写入',{flag:'a'},function(err){
    if(err) console.log(err)
})
// 不传flags默认为‘w’,默认写入的数据会全部覆盖原本的数据
fs.writeFile('hello.text','简单文件写入',function(err){
    if(err) console.log(err)
})

流式文件写入

注意:相当于创建一条管子,把要写的数据一点点的写进去。适合大文件写入) {flags:'a'}追加内容。

var ws=fs.createWriteStream('hello.text',{flags:'a'});
ws.write('流式文件写入1');
ws.write('流式文件写入2');
ws.end();
ws.on('open',function(){
    console.log('流式写入开始');
})
ws.on('close',function(){
    console.log('流式写入结束');
})

简单文件读取

fs.readFile('model.jpg',function(err,data){ //date是buffer,一次性把所有的数据读取
    if(err) throw err;
    // fs.writeFile('model2.jpg',data,function(err){
    //     console.log('文件已经写入')
    // })
    var file=fs.createWriteStream('model2.jpg');
    file.write(data);
    file.end()
})

流式文件读取

(第一种)
var rs=fs.createReadStream('C:/Users/spike/Desktop/三方协议.pdf')
var ws=fs.createWriteStream('三方协议.pdf')
rs.on('data',function(data){
    ws.write(data);
    console.log(data)
})
rs.once('close',function(){
    ws.end();
    console.log('读完关闭')
})

(第二种)
var rs=fs.createReadStream('C:/Users/spike/Desktop/三方协议.pdf')
var ws=fs.createWriteStream('三方协议.pdf')
rs.pipe(ws)