nodejs 使用fs.read读取文件
用到了promise的递归调用,因为不太会用promise,记录一下,这个代码读取中文文本时有概率乱码,因为读取的间隔是100,可能就把中文给分割开了
// 读取文件
function readData(path,encoding){
return new Promise((resolve,reject)=>{
fs.open(path, 'r',(err,fd)=>{
if(err){
log(err);
return;
}
let bufs = buffer.Buffer.alloc(100,encoding);
let str = "";
resolve(readBuffers(fd,bufs,str))
})
})
}
function readBuffers(fd,bufs,str) {
return new Promise((resolve,reject)=>{
fs.read(fd,bufs,0,bufs.length,null,(err,length,buffer)=>{
if(err){
reject(err);
}
if(length!=0){
str+= buffer.slice(0, length).toString()
resolve(readBuffers(fd,bufs,str))
}else{
resolve(str);
}
})
})
}
这篇博客记录了使用Node.js的fs.read函数配合Promise递归读取文件的过程,特别提到在读取中文文本时可能出现的乱码问题,由于每次读取100字节,可能会导致中文字符被分割,从而引发乱码。解决方案可能是调整读取间隔或者使用更合适的编码方式。
1502

被折叠的 条评论
为什么被折叠?



