Node.js 文件系统

Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API,这些API在Node自带的fs模块,可以直接使用,如下:
// 申请使用文件系统模块
var fs = require("fs")

异步和同步

I/O操作皆是耗时操作,为了满足不同的使用情况,fs模块提供了2种操作方式:同步的fs.readFile(file[, options], callback)
和异步的fs.readFileSync(file[, options])。具体使用如下:
// fs.js
// test.txt 与 fs.js 在同一目录下,内容为:
// Hello World !
// 中文是否乱码
var fs = require('fs') ;
// 异步,注意:当[, options]为一个string的时候,表示为编码格式。
// 默认编码格式为null , 操作权限为'r'
fs.readFile('test.txt' , 'utf8' , 'r' , function(err , data){
    if(err){
        return console.log(err + "\n") ;
    }
    console.log("异步:" + data.toString() + "\n") ;
}) ;

// 同步
var data = fs.readFileSync('test.txt');
console.log("同步: " + data.toString() + "\n");

console.log("程序执行完毕。\n");
运行结果:
同步: Hello World !
中文是否乱码

程序执行完毕。

异步:Hello World !
中文是否乱码

方法(Methods)

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

  • path < String > | < Buffer > 文件的路径
  • flags < String > | < Number > 文件打开的方式
  • mode < Integer > 设置文件权限,文件创建默认权限为 0666(可读,可写)。
  • callback < Function > 回调函数;callback 返回2个参数function(err , data):err,如果打开文件失败的错误信息;data,文件打开成功的文件内容。

2.fs.openSync(path, flags[, mode])

fs.open()的同步方法,返回一个代表文件描述符。

3.fs.stat(path, callback)

  • path < String > | < Buffer > 重点内容
  • callback < Function > 回调函数,带有两个参数如:(err, stats), stats 是 fs.Stats 对象。关于fs.Stats 对象,参考https://nodejs.org/dist/latest-v6.x/docs/api/fs.html#fs_class_fs_stats 这里不详细介绍

    fs.Stats对象常用方法有:
    这里写图片描述
    当然,你也可以通过require(‘util’).inspect(stats)将Stats对象转换成json的形式

4.fs.statSync(path)

fs.stat()的同步方法,返回一个fs.Stats对象。

5.fs.writeFile(file, data[, options], callback)

  • file < String > | < Buffer > | < Integer > 文件路径或者文件描述符
  • data < String > | < Buffer > 要写入文件的数据,可以是 String(字符串) 或 Buffer(流) 对象。
  • options < Object > | < String >
    • encoding < String > | < Null > 默认 ‘utf8’ 编码
    • mode < Integer > 默认值 0o666
    • flag < String > 默认为 ‘w’
    • callback < Function > 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

该方法会将file(如果存在该文件)中的数据重写。另外,当data是流对象的时候编码参数encoding将会被忽略;如果option是String,它就会被自动认为是编码格式。
注意:在回调方法没有执行完毕时,对一个文件多次使用该方法是不安全的,建议使用fs.createWriteStream()方法。另外,如果已经存在“file”文件,会将文件中的内容替换为data。

6.fs.writeFileSync(file, data[, options])

fs.writeFile(file, data[, options], callback)的同步方法,返回undefined。

fs模块还有很多其他操作,详情请看官方文档:https://nodejs.org/dist/latest-v6.x/docs/api/fs.html

附录

1.文件的操作方式

这里写图片描述

2.操作方式rs+注意事项

该方式对于网络文件操作系统十分有用,然而对真实系统的I/O有很大影响,不建议使用该方式;另外,该参数不会使fs.open()方法进入同步锁状态,
如果想同步打开文件,你应该使用fs.openSync()方法。

3.操作方式x注意事项

操作方式 'x' 用来确保操作的路径是新创建的。但是,在部分可移植操作系统中,一些有符号链接的文件,即使他们不存在,也被认为是存在路径的,
因此,这个标记在网络文件系统中可能是无效的。

4.‘按位写’注意事项

在Linux中,当文件以追加方式打开的时候‘按位写’操作通常不起作用。Linux内核通常会忽略位置参数,直接在文件末尾追加新的数据,
不能实现在特定的位置添加数据。

5.fs.open()的平台差异性

在OS X 和 Linux上对目录使用'a+'会导致错误([Error: EISDIR: illegal operation on a directory, open <directory>])抛出,
在Windows 和 FreeBSD 上,将返回文件描述。   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值