私は、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+');
}
その後、私はバッチでファイルをCSV形式の行を書くことfs.writeを使用していくつかのコードを持っている:私はインクルードは、各ファイルのファイル記述子が含まれているオブジェクトを持っています。この部分は正常に動作しています。私はCSVファイルを整えています。今度は、ファイル全体の内容を文字列として読み込む必要があります。これは私がそれをやろうとする方法です:
fs.readFileSync(csvFds['file1']).toString();
しかし、私はいつも空の文字列を取得しています。私は、fs.readFileSyncが実際にはconsole.logを使用してtoString()メソッドを削除することでBufferを返すことを確認しました。
私は本当にこれに固執していますので、どんな助けでも大歓迎です。前もって感謝します。ここに私のノードのバージョンやOSに関するいくつかの追加情報があります:
$ 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