Node3-4基础API----fs(文件系统)

Posted chorkiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node3-4基础API----fs(文件系统)相关的知识,希望对你有一定的参考价值。

异步的形式总是将完成回调作为其最后一个参数。 传给完成回调的参数取决于具体方法,但第一个参数始终预留用于异常。 如果操作成功完成,则第一个参数将为 null 或 undefined

1.读取文件操作(readFile)

举个例子(读取文件操作)  同步会先执行完 [尽量用异步]

const fs = require(‘fs‘)
fs.readFile(‘./30_readfile.js‘,‘utf8‘,(err,data)=>
    if(err)
        throw err
    else
        //输出结果是一个Buffer的(因为没有toString或者在参数那里定义编码格式)
        console.log(data);
        // console.log(data.toString());
    
)

// 同步操作
const data =  fs.readFileSync(‘./29_event_remove.js‘,‘utf8‘);
console.log(data);

2.写文件(writeFile)

 

//输出done
const fs = require(‘fs‘)

fs.writeFile(‘./text‘,‘this is text‘,‘utf8‘,err=>
    if(err) throw err;
    console.log(‘done‘)
)

//输出done 使用了Buffer
const fs = require(‘fs‘)
const content = Buffer.from(‘this is text‘)
fs.writeFile(‘./text‘,content,err=>
    if(err) throw err;
    console.log(‘done‘)
)

 

3.查看文件信息(stats)

 

const fs =require(‘fs‘)
fs.stat(‘./32_stat.js‘,(err,stats)=>
    if(err)
        throw err
    else
        console.log(stats.isFile());
        console.log(stats.isDirectory());
        console.log(stats);
    
)

 

运行结果:

技术图片

4.重命名(rename)

const fs =require(‘fs‘)
fs.rename(‘./text‘,‘text.txt‘,err=>
    if(err) throw err
    console.log(‘done!‘);
)

5.unlink

const fs = require(‘fs‘)
fs.unlink(‘./text.txt‘,err=>);

6.读文件夹(readdir)

const fs = require(‘fs‘)
fs.readdir(‘./‘,(err,files)=>
    if(err) throw err
    console.log(files);
)

运行结果

技术图片

7.创建一个文件夹(mkdir)

const fs =require(‘fs‘)
fs.mkdir(‘test‘,err=> )

8.移除一个文件夹(rmdir)

const fs = require(‘fs‘)
fs.rmdir(‘./test‘,err=>);

9.监视(watch)[很有用,做本地构建相当方便]

const fs = require(‘fs‘)
fs.watch(‘./‘,
    recursive:true
,(eventType,filename)=>
    console.log(eventType,filename);
);

10.readstream

//stream有方向的流 (数据) stream有两个条件按,一个是方向一个是数据
const fs = require(‘fs‘)
const rs = fs.createReadStream(‘./39_readstream.js‘);
//读一点给一点,类似网速慢加载从上到下
rs.pipe(process.stdout);

11.writestream

const fs =require(‘fs‘)
const ws = fs.createWriteStream(‘./text.txt‘)
const tid = setInterval(()=>
    const num = parseInt(Math.random()*10)
    console.log(num);
    
    if(num<8)
        ws.write(num + ‘‘)
    else
        clearInterval(tid)
        ws.end()
    
,200)
ws.on(‘finish‘,()=>
    console.log(‘done!‘); 
)

运行结果

技术图片

 

12.回调地狱解决

方法一

const fs =require(‘fs‘)
const promisify = require(‘util‘).promisify;

const read = promisify(fs.readFile)
read(‘./41_promisify.js‘).then(data=>
    console.log(data.toString());
    
).catch(ex=>
    console.log(ex);
    
)

运行结果

技术图片

方法二

const fs =require(‘fs‘)
const promisify = require(‘util‘).promisify;

const read = promisify(fs.readFile)
// read(‘./41_promisify.js‘).then(data=>
//     console.log(data.toString());
    
// ).catch(ex=>
//     console.log(ex);
    
// )

async function test()
    try
        const content= await read(‘./41_promisify.js‘)
        console.log(content.toString());
    catch(ex)
        console.log(ex);
       

test();

运行结果跟上面一样

以上是关于Node3-4基础API----fs(文件系统)的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs读取文件

Node的文件系统及Buffer概述

fs.exists 和 fs.existsSync 之间的区别

node.js 深入 5 fs对文件的操作,创建删除

在目录上使用 fs.watch 似乎不会注意到添加的文件

操作系统-文件系统基础