📜  Node.js fsPromises.truncate() 方法

📅  最后修改于: 2022-05-13 01:56:41.181000             🧑  作者: Mango

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