Node.js--文件系统

Node.js 文件系统

Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:

var fs = require('fs')
var os = require('os')

异步和同步

Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile()同步的 fs.readFileSync()

异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。

var data = fs.readFile('./demo.txt',function(err,data){
   
    if(err) throw err //如果出错 即err存在  直接用throw err抛出异常
    console.log(data.toString());
})

建议大家使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。

详细代码如下
创建demo.txt文件 输入内容abc
在这里插入图片描述

创建index.js文件

//引入模块
var fs =require('fs')

//同步读取文件
console.log('start....');
var data=fs.readFileSync('./demo.txt')
console.log(data.toString());
console.log('end...');



console.log('start....');
var data = fs.readFile('./demo.txt',function(err,data){
   
    if(err) throw err //如果出错 即err存在  直接用throw err抛出异常
    console.log(data.toString());
})
console.log('end...');

在控制台输入node index.js 输出如下图
在这里插入图片描述


接下来,让我们来具体了解下 Node.js 文件系统的方法。

打开文件

语法

以下为在异步模式下打开文件的语法格式:

fs.open(path, flags[, mode], callback)
参数

参数使用说明如下:

  • path - 文件的路径
  • flags - 文件打开的行为。具体值详见下文。
  • mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
  • callback - 回调函数,带有两个参数如:callback(err, fd)。

flags 参数可以是以下值:

Flag 描述
r 以读取模式打开文件。如果文件不存在抛出异常
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件
rs+ 以同步的方式读取和写入文件
w 以写入模式打开文件 如果文件不存在则进行创建
wx 类似于w 但是如果文件路径存在 则文件写入会失败
w+ 以读写模式打开文件 文件不存在则创建
wx+ 类似于w+ 如果文件路径存在 则文件读写失败
a 以追加模式打开文件,如果文件不存在则创建。
ax 类似 ‘a’, 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 ‘a+’, 但是如果文件路径存在,则文件读取追加失败。

具体实例代码如下
创建一个file.js文件 一个input.txt文件

var fs = require("fs")
console.log("准备打开文件啦!");
fs.open('input.txt','r+',function(err,fd){
   
    if(err){
   
        throw err;
    }
    console.log("文件打开成功啦!!");
})

执行结果如下图
在这里插入图片描述


获取文件信息

语法

以下为通过异步模式获取文件信息的语法格式:

fs.stat(path, callback)
参数

参数使用说明如下:

  • path - 文件路径。

  • callback - 回调函数,带有两个参数如:(err, stats), stats 是 fs.Stats 对象。

fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的提供方法判断文件的相关属性。例如判断是否为文件:

var fs = require('fs');

fs.stat('/Users/liuht/code/itbilu/demo/fs.js', function (err, stats) {
   
    console.log(stats.isFile());         //true
})
方法 描述
stats.isFile() 如果是文件返回 true,否则返回 false。
stats.isDirectory() 如果是目录返回 true,否则返回 false。
stats.isBlockDevice() 如果是块设备返回 true,否则返回 false。
stats.isCharacterDevice() 如果是字符设备返回 true,否则返回 false。
stats.isSymbolicLink() 如果是软链接返回 true,否则返回 false。
stats.isFIFO() 如果是FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道。
stats.isSocket() 如果是 Socket 返回 true,否则返回 false。
实例

接下来我们创建 file.js 文件,代码如下所示:

var fs = require("fs");

console.log("准备打开文件!");
fs.stat('input.txt', function (err, stats) {
   
   if (err) {
   
       return console.error(err);
   }
   console.log
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃囍囍丸子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值