Node.js 文件状态
每个文件都具有一组我们可以使用 Node.js 检查的详细信息。特别是,使用 fs 模块 提供的 stat()
方法。
调用它时传入文件路径,一旦 Node.js 获取文件详细信息,它将调用您传入的回调函数,该函数包含 2 个参数:错误消息和文件状态:
js
import fs from 'node:fs'
fs.stat('/Users/joe/test.txt', (err, stats) => {
if (err) {
console.error(err)
}
// 我们可以在 `stats` 中访问文件状态
})
Node.js 还提供了一个同步方法,该方法会阻塞线程,直到文件状态准备就绪:
js
import fs from 'node:fs'
try {
const stats = fs.statSync('/Users/joe/test.txt')
} catch (err) {
console.error(err)
}
文件信息包含在 stats 变量中。我们可以使用 stats 提取哪些信息?
很多,包括:
- 使用
stats.isFile()
和stats.isDirectory()
判断文件是目录还是文件 - 使用
stats.isSymbolicLink()
判断文件是否为符号链接 - 使用
stats.size
获取文件大小(以字节为单位)。
还有其他高级方法,但是您在日常编程中使用的主要内容就是这些。
js
import fs from 'node:fs'
fs.stat('/Users/joe/test.txt', (err, stats) => {
if (err) {
console.error(err)
return
}
stats.isFile() // true
stats.isDirectory() // false
stats.isSymbolicLink() // false
stats.size // 1024000 //= 1MB
})
如果您愿意,还可以使用 fs/promises
模块提供的基于 Promise 的 fsPromises.stat()
方法:
js
import fs from 'node:fs/promises'
try {
const stats = await fs.stat('/Users/joe/test.txt')
stats.isFile() // true
stats.isDirectory() // false
stats.isSymbolicLink() // false
stats.size // 1024000 //= 1MB
} catch (err) {
console.log(err)
}
您可以在 文件系统模块 文档中阅读有关 fs 模块的更多信息。