前提となる文字コードやバイナリに関しての知識が怪しいので、間違っている点を指摘してもらえるとありがたいです。

まずfs.createReadStream(, {encoding})はテキストファイルを読み込む場合に使用するオプションであり、読み込んだデータを指定した文字コードの文字列に変換する機能で、default値がnullなのはバイナリファイルを読み込むことを想定したものだと認識しています。

次にfs.createWriteStream(, {encoding})は書き込むのがバイナリファイルならnullを、テキストファイルなら事前に変換する文字コードを指定する機能なのだと認識しています。

ここで疑問なのですが、fs.createReadStreamのそれとは違いdefault値がnullではなく"utf8"になっています。

標準でfs.createReadStreamはバイナリファイル、fs.createWriteStreamはテキストファイルを扱うよう分かれているのは混乱の元だと思うのですが、何故このような仕様になっているのでしょうか。