一、在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
})
今日份寄语:
人生是一场相逢,人生又是一场遗忘,最终我们都会成为岁月中的风景。