📜  Node.js fs.truncate() 方法

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

Node.js fs.truncate() 方法

node.js 中的fs.truncate() 方法用于更改文件的大小,即增加或减小文件大小。此方法将路径中文件的长度更改 len 个字节。如果 len 表示的长度比文件的当前长度短,则文件将被截断为该长度。如果它大于文件长度,则通过附加空字节 (x00) 来填充,直到达到 len。

句法:

fs.truncate( path, len, callback )

参数:此方法接受三个参数,如上所述,如下所述:

  • path:它保存目标文件的路径。它可以是字符串、缓冲区或 url。
  • len:它保存文件的长度,之后文件将被截断。它需要一个整数输入,它不是强制性条件,因为它默认设置为 0。
  • 回调:回调接收一个参数,调用中抛出任何异常。

注意:在最新版本的 node.js 中,回调不再是可选参数。如果我们不使用回调参数,那么它将在运行时返回“类型错误”。

返回值:它将所需文件的长度更改为所需的长度。

示例 1:

// Node.js program to demonstrate the
// fs.truncate() method
   
// Include the fs module
var fs = require('fs');
  
// Completely delete the content
// of the targeted file
fs.truncate('/path/to/file', 0, function() {
    console.log('File Content Deleted')
});

输出:

File Content Deleted

示例 2:

// Node.js program to demonstrate the
// fs.truncate() method
   
// Include the fs module
var fs = require('fs');
  
console.log("Content of file");
   
// Opening file
fs.open('input.txt', 'r+', function(err, fd) {
    if (err) {
        return console.error(err);
    }
   
    // Reading file
    fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
        if (err){
            console.log(err);
        }
   
        // Truncating the file
        fs.truncate('/path/to/file', 15, function(err, bytes){
            if (err){
                console.log(err);
            }
   
            // Content after truncating
            console.log("New content of file");
            fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
                if (err) {
                    console.log(err);
                }
                  
                // Print only read bytes to avoid junk.
                if(bytes > 0) {
                    console.log(buf.slice(0, bytes).toString());
                }
   
                // Close the opened file.
                fs.close(fd, function(err) {
                    if (err) {
                        console.log(err);
                    }
                });
            });
        });
    });
});

输出:

Content of file
GeeksforGeeks example for truncate in node
New content of file
GeeksforGeeks

参考: https://nodejs.org/api/fs.html#fs_fs_ftruncate_fd_len_callback