filehandle.truncate(len)
如果文件大于 len
个字节,则仅前 len
个字节将保留在文件中。
例如,以下程序仅保留文件的前四个字节:
const fs = require('fs');
const fsPromises = fs.promises;
console.log(fs.readFileSync('temp.txt', 'utf8'));
// 打印: Node.js
async function doTruncate() {
let filehandle = null;
try {
filehandle = await fsPromises.open('temp.txt', 'r+');
await filehandle.truncate(4);
} finally {
if (filehandle) {
//
await filehandle.close();
}
}
console.log(fs.readFileSync('temp.txt', 'utf8')); // 打印: Node
}
doTruncate().catch(console.error);
如果文件先前小于 len
个字节,则将其扩展,并且扩展部分将使用空字节('\0'
)填充:
const fs = require('fs');
const fsPromises = fs.promises;
console.log(fs.readFileSync('temp.txt', 'utf8'));
// 打印: Node.js
async function doTruncate() {
let filehandle = null;
try {
filehandle = await fsPromises.open('temp.txt', 'r+');
await filehandle.truncate(10);
} finally {
if (filehandle) {
//
await filehandle.close();
}
}
console.log(fs.readFileSync('temp.txt', 'utf8')); //
}
doTruncate().catch(console.error);
Truncates the file then resolves the Promise
with no arguments upon success.
If the file was larger than len
bytes, only the first len
bytes will be
retained in the file.
For example, the following program retains only the first four bytes of the file:
const fs = require('fs');
const fsPromises = fs.promises;
console.log(fs.readFileSync('temp.txt', 'utf8'));
// Prints: Node.js
async function doTruncate() {
let filehandle = null;
try {
filehandle = await fsPromises.open('temp.txt', 'r+');
await filehandle.truncate(4);
} finally {
if (filehandle) {
// Close the file if it is opened.
await filehandle.close();
}
}
console.log(fs.readFileSync('temp.txt', 'utf8')); // Prints: Node
}
doTruncate().catch(console.error);
If the file previously was shorter than len
bytes, it is extended, and the
extended part is filled with null bytes ('\0'
):
const fs = require('fs');
const fsPromises = fs.promises;
console.log(fs.readFileSync('temp.txt', 'utf8'));
// Prints: Node.js
async function doTruncate() {
let filehandle = null;
try {
filehandle = await fsPromises.open('temp.txt', 'r+');
await filehandle.truncate(10);
} finally {
if (filehandle) {
// Close the file if it is opened.
await filehandle.close();
}
}
console.log(fs.readFileSync('temp.txt', 'utf8')); // Prints Node.js\0\0\0
}
doTruncate().catch(console.error);
The last three bytes are null bytes ('\0'
), to compensate the over-truncation.