Da diese Frage bei Google weit oben erscheint, möchte ich einige kontextbezogene Informationen über die ursprüngliche Frage hinzufügen (Hervorhebung von mir):
Warum Gibt fs.readFile() von Node.js einen Puffer statt eines Strings zurück?
Weil Dateien nicht immer aus Text bestehen
Auch wenn Sie wie es der Programmierer kennt: Node hat keine Ahnung, was in der Datei steht, die Sie zu lesen versuchen. Es könnte eine Textdatei sein, aber genauso gut könnte es ein ZIP-Archiv oder ein JPG-Bild sein - Node weiß es nicht.
Weil das Lesen von Textdateien kompliziert ist
Auch wenn Node wusste eine Textdatei lesen würde, hätte es immer noch keine Ahnung, welche Zeichenkodierung verwendet wird (d. h. wie die Bytes in der Datei auf für Menschen lesbare Zeichen abgebildet werden), da die Zeichenkodierung selbst nicht in der Datei gespeichert ist.
Es gibt Möglichkeiten, um erraten die Zeichenkodierung von Textdateien mit mehr oder weniger Zuversicht (das tun Texteditoren beim Öffnen einer Datei), aber Sie wollen normalerweise nicht, dass sich Ihr Code ohne Ihre ausdrücklichen Anweisungen auf Vermutungen verlässt.
Puffer zur Rettung!
Da er all diese Details nicht kennt und auch nicht kennen kann, liest Node die Datei einfach Byte für Byte, ohne etwas über ihren Inhalt anzunehmen.
Und genau das ist der zurückgegebene Puffer: ein reiner Container für die unbearbeiteten Bytes in der Datei. Wie diese Bytes interpretiert werden sollen, bleibt Ihnen als Entwickler überlassen.