• fd {integer}
    • len {integer} 默认值: 0
    • callback {Function}
      • err {Error}

    异步的 ftruncate(2)。 除了可能的异常,完成回调没有其他参数。

    如果文件描述符指向的文件大于 len 个字节,则只有前面 len 个字节会保留在文件中。

    例如,以下程序只保留文件的前 4 个字节:

    1. console.log(fs.readFileSync('temp.txt', 'utf8'));
    2. // 打印: Node.js
    3. // 获取要截断的文件的文件描述符。
    4. const fd = fs.openSync('temp.txt', 'r+');
    5. // 将文件截断为前 4 个字节。
    6. fs.ftruncate(fd, 4, (err) => {
    7. assert.ifError(err);
    8. console.log(fs.readFileSync('temp.txt', 'utf8'));
    9. });
    10. // 打印: Node

    如果文件小于 len 个字节,则会对其进行扩展,并且扩展部分将填充空字节('\0'):

    1. console.log(fs.readFileSync('temp.txt', 'utf8'));
    2. // 打印: Node.js
    3. // 获取要截断的文件的文件描述符。
    4. const fd = fs.openSync('temp.txt', 'r+');
    5. // 将文件截断为前 10 个字节,但实际大小为 7 个字节。
    6. fs.ftruncate(fd, 10, (err) => {
    7. assert.ifError(err);
    8. console.log(fs.readFileSync('temp.txt'));
    9. });
    10. // 打印: <Buffer 4e 6f 64 65 2e 6a 73 00 00 00>
    11. // (UTF8 的值为 'Node.js\0\0\0')

    最后 3 个字节是空字节('\0'),以补充超出的截断。