nodejs - 检测文件结尾 (EOF)
nodejs - Detect end of file (EOF)
我需要在 nodejs 中将文件读入缓冲区并为此使用 "old" read() 函数,因为我需要具有严格大小的缓冲区。
我有一个循环来逐块读取文件。但是如何检测是否到达文件末尾 (EOF)?
我的代码是:
do
fs.read(fd, buf1, 0, CHUNKSIZE, null, (err, bytesRead, buffer) => {
console.log("Bytes read: " + bytesRead);
console.log("Buffer: " + buffer);
});
while (!EOF)
但是如何确定 EOF?
流的结尾是 chunkSize > bytesRead
时,请务必使用 bytesRead
将缓冲区转换为字符串,否则您可能会以垃圾字符结尾。
function readAll(fd, chunkSize, callback) {
fs.read(fd, new Buffer(chunkSize), 0, chunkSize, null, (err, bytesRead, buffer) => {
if (err) {
return callback(err);
}
console.log(buffer.toString('utf8', 0, bytesRead));
if (chunkSize > bytesRead) {
callback();
} else {
readAll(fd, chunkSize, callback);
}
});
}
我需要在 nodejs 中将文件读入缓冲区并为此使用 "old" read() 函数,因为我需要具有严格大小的缓冲区。
我有一个循环来逐块读取文件。但是如何检测是否到达文件末尾 (EOF)?
我的代码是:
do
fs.read(fd, buf1, 0, CHUNKSIZE, null, (err, bytesRead, buffer) => {
console.log("Bytes read: " + bytesRead);
console.log("Buffer: " + buffer);
});
while (!EOF)
但是如何确定 EOF?
流的结尾是 chunkSize > bytesRead
时,请务必使用 bytesRead
将缓冲区转换为字符串,否则您可能会以垃圾字符结尾。
function readAll(fd, chunkSize, callback) {
fs.read(fd, new Buffer(chunkSize), 0, chunkSize, null, (err, bytesRead, buffer) => {
if (err) {
return callback(err);
}
console.log(buffer.toString('utf8', 0, bytesRead));
if (chunkSize > bytesRead) {
callback();
} else {
readAll(fd, chunkSize, callback);
}
});
}