node.js - nodejs - 检测文件结尾(EOF)
问题描述
我需要将文件读入nodejs中的缓冲区并为此使用“旧” 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?
解决方案
流的结尾是 when 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);
}
});
}
推荐阅读
- docker - 使用 gradle 2.3 创建一个新的 docker 镜像
- python - python导入函数选择错误的同名文件
- react-hooks - 重定向时history.push抛出错误
- python-3.x - 按行和列将 Pandas Dataframe 的元素重组为新的数据框
- azure - 如何在 ARM 模板中组合复制和奇异属性
- ruby-on-rails - 带有嵌套资源的 Rails 表单的 NoMethodError
- php - 嵌套 For Each 循环中的回滚事务
- python - 使用python将现有文本转换为docx中的heading3格式
- python - SQLAlchemy:具有单表继承的邻接表
- sql - 如何在 SQL Server 中的多个列上应用字符串拆分功能