Node文件操作基础知识(三)

109 阅读2分钟

一、在node.js 中使用文件描述

在与位于文件系统中的文件进行交互之前,需要先获取文件的描述符,文件描述符是使用fs模块提供的open()方法打开文件后返回的:

const fs = require('fs')

fs.open('/Users/Amy/index.txt', 'r', (err, fd) => {

  //fd 是文件描述符。

})

需要注意:将r作为fs.open()调用的第二个参数,该标志意味着打开文件用于读取。

其他常用的标志有:

a、r + 打开文件用于读写

b、W+ 打开文件用于读写,将流定位到文件的开头,如果文件不存在则创建文件。

c、a打开文件用于写入,将流定位到文件的末尾,如果文件不存在则创建文件。

d、a打开文件用于读写,将流定位到文件的末尾,如果文件不存在则创建文件。

也可以使用fs.openSync方法打开文件,该方法会返回文件描述符而不是在回调中提供。

const fs = require('fs')

try {

  const fd = fs.openSync('/Users/Amy/index.txt', 'r')

} catch (err) {

  console.error(err)

}

一旦获得文件描述符,就可以以任何方式执行所有需要它的操作,例如:调用fs.open()以及许多与文件系统交互的其他操作。

二、Node.js文件属性

每个文件都带有一组详细信息,可以使用node.js进行查询,具体来说,使用fs模块提供的stat()方法。

调用时传入文件路径,一旦node.js获得文件的详细信息,则会调用传入的回调函数,并带上两个参数。

错误消息和文件属性:

const fs = require('fs')

fs.stat('F:/test/index.txt', (err, stats) => {

  if (err) {

    console.error(err)

    return

  }

  //可以访问 `stats` 中的文件属性

})

node.js  也提供了同步的方法,该方法会阻塞线程,直到文件属性准备就绪为止:

const fs = require('fs')

try {

  const stats = fs.statSync('F:/test/index.txt')

} catch (err) {

  console.error(err)

}

文件的信息包含在属性变量中。可以通过属性提取哪些信息?

有很多,比如:

使用stats.isFile()和stats.isDirectory()判断文件是不是目录或文件

使用 stats.isSymbolicLink() 判断文件是否为符号链接

使用 stats.size获取文件的大小(以字节为单位)

还有其他一些高级的方法,但以上为日常编程中常用的。

const fs = require('fs')

fs.stat('F:/test/index.txt', (err, stats) => {

  if (err) {

    console.error(err)

    return

  }

  stats.isFile() //true

  stats.isDirectory() //false

  stats.isSymbolicLink() //false

  stats.size //1024000 //= 1MB

})

今日份寄语:

人生是一场相逢,人生又是一场遗忘,最终我们都会成为岁月中的风景。