fd
{integer}len
{integer} 默认值:0
。callback
{Function}err
{Error}
异步的 ftruncate(2)。 除了可能的异常,完成回调没有其他参数。
如果文件描述符指向的文件大于 len
个字节,则只有前面 len
个字节会保留在文件中。
例如,以下程序只保留文件的前 4 个字节:
console.log(fs.readFileSync('temp.txt', 'utf8'));
// 打印: Node.js
// 获取要截断的文件的文件描述符。
const fd = fs.openSync('temp.txt', 'r+');
// 将文件截断为前 4 个字节。
fs.ftruncate(fd, 4, (err) => {
assert.ifError(err);
console.log(fs.readFileSync('temp.txt', 'utf8'));
});
// 打印: Node
如果文件小于 len
个字节,则会对其进行扩展,并且扩展部分将填充空字节('\0'
):
console.log(fs.readFileSync('temp.txt', 'utf8'));
// 打印: Node.js
// 获取要截断的文件的文件描述符。
const fd = fs.openSync('temp.txt', 'r+');
// 将文件截断为前 10 个字节,但实际大小为 7 个字节。
fs.ftruncate(fd, 10, (err) => {
assert.ifError(err);
console.log(fs.readFileSync('temp.txt'));
});
// 打印: <Buffer 4e 6f 64 65 2e 6a 73 00 00 00>
// (UTF8 的值为 'Node.js\0\0\0')
最后 3 个字节是空字节('\0'
),以补充超出的截断。