gpt4 book ai didi

javascript - fs.readFileSync 始终返回空字符串

转载 作者:行者123 更新时间:2023-11-27 22:39:33 26 4
gpt4 key购买 nike

我有一个脚本,可以将数据从 API 写入某些文件。我有一个对象,其中包含每个文件的文件描述符:

var csvFds = {
'file1' : null,
'file2' : null,
'file3' : null,
'file4' : null
};

for (var file in csvFds) {

var dirPath = __dirname + '/files/' + file;

try {
fs.statSync(dirPath);
}
catch (e) {
mkdirp.sync(dirPath, {mode: 0755});
}

csvFds[file] = fs.openSync(dirPath + '/' + moment().format("YYYY-MM-DDTHH:mm:ss[Z]") + '.csv', 'a+');
}

然后我有一些代码使用 fs.write 将 csv 行批量写入文件。这部分工作正常。我有格式良好的 csv 文件。现在我需要将整个文件的内容作为字符串读取。这就是我尝试做的事情:

fs.readFileSync(csvFds['file1']).toString();

但由于某种原因我总是得到一个空字符串。我已经确认 fs.readFileSync 实际上通过使用 console.log 并删除 toString() 方法返回缓冲区。

我真的很困惑,所以任何帮助将不胜感激。提前致谢。以下是有关我的 Node 版本和操作系统的一些附加信息:

$ node -v
v6.2.3-pre

$ uname -a
Darwin i-2.local 14.5.0 Darwin Kernel Version 14.5.0: Thu Jun 16 19:58:21 PDT 2016; root:xnu-2782.50.4~1/RELEASE_X86_64 x86_64

最佳答案

对于有同样问题的其他人。

对我来说,获得非空字符串的唯一方法是使用 fs.readFile 而不是 fs.readFileSync。

我使用 Mac,我试图读取 Node 自行创建的文件。如果我尝试读取另一个文件,它就会起作用。

fs.readFile(file, (err, data)=>{
if(err){
console.log(err)
throw err
}else{
let file_content = data.toString('utf8')
// your code here
}
})

关于javascript - fs.readFileSync 始终返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38859609/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com