🌊

【Node.js】readFileSync, appendFileSyncで複数ファイルを順番通り処理する

2022/03/09に公開

やりたい事

ファイル名がタイムスタンプである複数あるテキストファイルの内容を、
新しい日付順に並べて、一つのファイルにしたい。

うまくいったコード

const fs = require('fs');
const path = "./posts/"

fs.readdir(path, (err, files) => {
  const filesR = files.reverse()
    for (let index = 0; index < filesR.length-1; index++) {
        const element = filesR[index];
        const file = fs.readFileSync(path+element, { encoding: "utf8" }, (err, file) => {});
        fs.appendFileSync("./docs/index.md", file+"\n"+element.replace(".md","")+"\n"+"<hr>"+"\n", (err) =>{
            if (err) throw err;
            console.log("書き込みOK!");
        })
    }
});

うまく行かなかった事

readFile, appendFileを使うと順番が毎回バラバラになってしまった。
非同期で処理されるメソッドなので、おそらくファイルの内容が多いファイルの方が
処理が重く、後に処理完了したのだと思う。

参考記事

https://jsprimer.net/use-case/nodecli/read-file/

Discussion