nodejs-fs文件操作

nodejs-fs 文件操作.

文件操作

文件操作可以使用nodejs的内置 fs模块实现。

并且所有文件系统操作都具有同步和异步的形式。


读取文件

读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。

发现同步跟异步的方法名就是后面相差一个Sync。其他文件的同步异步操作亦如此。

const fs = require("fs");
// 第一个参数为文件路径,第二个参数为回调函数。
// error是读取出错的异常,如果没有出错,则error为undifine。
// data 为文件的数据。
fs.readFile("test", (error, data) => {
    if (error) {
        console.log(error);
    } else {
        console.log(`异步读取:${data.toString()}`);
    }
});
// 同步读取,要try,catch下,捕获异常。
try {
    const data = fs.readFileSync("test");
    console.log(`同步读取:${data.toString()}`);
} catch (e) {
    console.log(e);
}

/*
同步读取:hahaha
异步读取:hahaha
*/

以上可以看出,虽然异步读取代码写在前面,但是实际上,同步读取先进行,因为异步读取并没阻塞线程。


文件写入

异步模式下写入语法为:

fs.writeFile(file, data[, options], callback)
  • file - 文件名或文件描述符。
  • data - 要写入文件的数据,可以是 String(字符串) 或 Buffer(缓冲) 对象。
  • options - 该参数是一个对象,包含 {encoding, mode, flag}。默认编码为 utf8, 模式为 0666 , flag 为 ‘w’
  • callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

例如:

const fs = require('fs');

fs.writeFile("write-file","123456", error=>{
    if (error){
        console.log(error);
    }else{
        const data = fs.readFileSync('write-file');
        console.log(data.toString());
    }
});
/**
123456
*/

先写入文件,然后读取出来.


获取文件信息

异步获取文件信息语法:

fs.stat(path, callback)

例如:

const fs = require("fs");

fs.stat(`test`,(error,stats)=>{
    if (error) {
        console.log(error);
    }else{
        console.log(stats);
    }
});

/*
Stats {
  dev: 2066,
  mode: 33204,
  nlink: 1,
  uid: 1000,
  gid: 1000,
  rdev: 0,
  blksize: 4096,
  ino: 13910026,
  size: 6,
  blocks: 8,
  atimeMs: 1569741090778.4666,
  mtimeMs: 1569741090466.4666,
  ctimeMs: 1569741090466.4666,
  birthtimeMs: 1569741090466.4666,
  atime: 2019-09-29T07:11:30.778Z,
  mtime: 2019-09-29T07:11:30.466Z,
  ctime: 2019-09-29T07:11:30.466Z,
  birthtime: 2019-09-29T07:11:30.466Z }
*/

stats类包含了文件的各种信息,还提供了有用的方法:如

const fs = require("fs");

fs.stat(`test`,(error,stats)=>{
    if (error) {
        console.log(error);
    }else{
        console.log(stats.isFile()); // true
        console.log(stats.isDirectory()); // false
    }
});

文件的删除

unlink:异步删除文件

const fs = require('fs');
fs.unlink('./test.txt',err=>{
    if (err) {
        console.log(err.message);
    }else{
        console.log(`删除成功!`);
    }
});
// => 删除成功!

同步删除文件

使用同步的操作发生的异常会立即抛出,可以使用 try…catch 处理,也可以允许冒泡。

const fs = require('fs');

try {
  fs.unlinkSync('/tmp/hello');
  console.log('已成功删除 /tmp/hello');
} catch (err) {
  // 处理错误
}

注意:使用异步的方法时无法保证顺序。 因此,对同一个文件的操作容易出错。


创建目录

语法:

fs.mkdir(path[,options],callback)

参数

参数使用说明如下:

  • path - 文件路径。
  • options 参数可以是:
    • recursive - 是否以递归的方式创建目录,默认为 false。
    • mode - 设置目录权限,默认为 0777。
  • callback - 回调函数,没有参数。

例如:

const fs = require("fs");

fs.mkdir('dir',error=>{
    if (error) {
        console.log(error);
    }else{
        console.log(`创建目录成功!`);
    }
});

如果目录存在则会出错,如果想要不管目录是否存在可以添加 recursive: true.

const fs = require("fs");

fs.mkdir('dir',{recursive: true},error=>{
    if (error) {
        console.log(error);
    }else{
        console.log(`创建目录成功!`);
    }
});


读取目录

语法:

fs.readdir(path, callback)

参数

参数使用说明如下:

  • path - 文件路径。
  • callback - 回调函数,回调函数带有两个参数err, files,err 为错误信息,files 为 目录下的文件数组列表。

如,读取根目录(Linux系统):

const fs = require('fs');

fs.readdir('/',(error,files)=>{
    if (error) {
        console.log(error);
    }else{
        files.forEach(file=>{
            console.log(file);
        })
    }
});
/*
bin
boot
cdrom
dev
etc
home
...
*/


删除目录

fs.rmdir(path, callback)

  • path - 文件路径。
  • callback - 回调函数,error参数.
const fs = require('fs');

fs.rmdir("dir",error=>{
    if (error) {
        console.log(error);
    }
});

更多操作参考菜鸟教程.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值