У меня есть сценарий, который записывает данные из API в некоторые файлы. У меня есть объект, класс содержит дескрипторы файлов для каждого файла:fs.readFileSync всегда возвращает пустую строку
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 -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
Если вы предоставили кодировку 'readFileSync', вы получите строку вместо' Buffer' – mic4ael