Node.js fsPromises.truncate() 方法
fsPromises.truncate()方法在 Node.js 的文件系统模块中定义。文件系统模块主要用于与用户计算机的硬盘进行交互。
truncate()方法用于将文件的内部内容修改 'len' 字节。如果 len 比文件的当前长度短,则文件被截断为 len 的长度,如果大于文件长度,则通过附加空字节 (x00) 进行填充,直到达到 len。
句法:
fs.promises.truncate(path, len)
参数:此方法接受上面提到的两个参数,如下所述:
- path:它是一个String、Buffer或Url,指定目标文件的路径。
- len:它是一个数值,指定要截断的文件的长度。它是一个可选参数,默认值为 0,即如果没有提供 len 参数,它将截断整个文件。
返回值:此方法返回一个promise,成功时将在没有参数的情况下解决,如果出现问题,则以错误对象拒绝(例如,给定路径是目录的路径或给定路径不存在)。
示例 1:
// Node.js program to demonstrate the
// fsPromises.truncate() Method
// Importing File System module
const fs = require('fs');
// Truncate operation
fs.promises.truncate('./test.txt')
// If file is successfully truncated
.then(() => {
console.log('File contents are deleted!');
})
// If any error occurs
.catch(err => {
console.log(`Error Occurs, Error code ->
${err.code}, Error NO -> ${err.errno}`)
});
使用 async-await 实现相同的功能。
// Node.js program to demonstrate the
// fsPromises.truncate() Method
// Importing File System module
const fs = require('fs');
const truncate = async (path) => {
// Truncate operation
await fs.promises.truncate(path);
console.log('File contents are deleted!');
}
truncate('./test.txt')
// If any error occurs
.catch(err => {
console.log(`Error Occurs, Error code ->
${err.code}, Error NO -> ${err.errno}`)
});
运行程序前的文件内容:
运行程序后的文件内容:
输出:
File contents are deleted!
示例 2:部分截断
// Node.js program to demonstrate the
// fsPromises.truncate() Method
// Importing File System module
const fs = require('fs')
// Fetching contents before truncate
fs.promises.readFile('./test.txt')
.then(buff => {
const oldContents = buff.toString()
console.log(`\nContents before
truncate : \n${oldContents}`)
// Truncate operation
return fs.promises.truncate('./test.txt', 12)
})
// If file is successfully truncated
.then(() => {
console.log('\nTruncate done!\n')
// Fetching contents after truncate
return fs.promises.readFile('./test.txt')
})
.then(buff => {
const newContents = buff.toString()
console.log(`Contents after
truncate : \n${newContents}`)
})
// If any error occurs
.catch(err => {
console.log(`Error Occurs, Error code ->
${err.code}, Error NO -> ${err.errno}`)
});
使用 async-await 实现相同的功能
// Node.js program to demonstrate the
// fsPromises.truncate() Method
// Importing File System module
const fs = require('fs')
// Function to read file contents
const readFileContents = async (path) => {
const buff = await fs.promises.readFile(path)
return buff.toString()
}
// Function to truncate
const truncate = async (path, len) => {
// Fetching contents before truncate
const oldContents =
await readFileContents('./test.txt')
console.log(`\nContents before
truncate : \n${oldContents}`)
// Truncate operation
const buff = await fs.promises.truncate(path, len)
console.log('\nTruncate done!\n')
// Fetching contents before truncate
const newContents =
await readFileContents('./test.txt')
console.log(`Contents after
truncate : \n${newContents}`)
}
truncate('./test.txt', 12)
// If any error occurs
.catch(err => {
console.log(`Error Occurs, Error code ->
${err.code}, Error NO -> ${err.errno}`)
})
运行程序前的文件内容:
运行程序后的文件内容:
输出:
参考: https://nodejs.org/dist/latest-v14.x/docs/api/fs.html#fs_fspromises_truncate_path_len