<缓冲区72 65 74 72 69 65 76 65 72>请解释js中的含义

时间:2019-08-31 11:25:16

标签: javascript asynchronous promise async-await es6-promise

我正在练习javascript,想知道有关<Buffer 72 65 74 72 69 65 76 65 72>错误。

我正在从名为dog.txt的文件中读取数据。我发现,当我在console.log中放入“数据”时,我看到了这个<Buffer 72 65 74 72 69 65 76 65 72>错误。我知道解决方案是将“ $ {data}”放入console.log中以获得预期的结果。其实我想知道<Buffer 72 65 74 72 69 65 76 65 72>是什么意思。

这是代码

    return new Promise ((resolve,reject)=>{
        fs.readFile(file,(err,data)=>{
            if(err){reject("Data cannot be found")}else
            resolve(data);
        })
    })
}



const getdata=async()=>{
    try{
        const data=await ReadfilePro(`./dog.txt`);
    console.log(data);
    }catch(err){
        console.log(err);
    }
}

getdata();

此处dog.txt文件仅包含此狗名“猎犬”,不带引号。

由于上面的代码,我在控制台<Buffer 72 65 74 72 69 65 76 65 72>中得到了它。

我希望您能给出详细的答案,如果这是一个愚蠢的问题,对不起。

我不想要解决方案,我想要一个解释。谢谢

2 个答案:

答案 0 :(得分:2)

您正在读取的是字节缓冲区。 NodeJS无法也不会做出您正在读取字符串的假设,因为这是一个比人们想象的要难得多的假设。

其背后的原因是public partial class MainWindow: Window { public MainWindow() { InitializeComponent(); var img = BitmapFrame.Create(new System.IO.MemoryStream(System.Convert.FromBase64String("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")), BitmapCreateOptions.None, BitmapCacheOption.OnLoad); txt.Tag = img; } } 处于您可用的最低抽象级别之一。如果人们知道数据格式,那么人们期望以此为基础编写代码。

幸运的是,这里有转换方法。假设您知道缓冲区是有效的utf8,则调用readFile将尝试将缓冲区转换为utf8。

答案 1 :(得分:1)

正如@Sébastien所说,您需要指定编码格式。下面是您的readFile Promise的修复程序

 return new Promise ((resolve,reject)=>{
    fs.readFile(file,'utf-8', (err,data)=>{
        if(err){reject("Data cannot be found")}else
        resolve(data);
    })
})

}

我希望对您有帮助