קורס Node.JS שיעור חוצצים (Buffers)


זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/nodejs/lessons/13-buffers

היי ינון,
אני מצרפת מטה את הקוד שכתבתי לקריאה מקובץ ואיתחול הבפר
ראיתי שאצלך בתשובה השתמשת בPROMISS בצורה אחרת וקריאה של הקובץ שורה שורה
מה הצורה הטובה ביותר לכתוב?

fs = require('fs')
fsp = fs.promises

async function readJumpFile(fileName) {
    let buf
    const data = await fsp.readFile(fileName,'utf8')
       buf = data.split('\r\n')
       console.log(buf,'***')
    return buf
}

function countJumps(gameBuffer) {
  let pos = 0;
  let counter = 0;
  while (pos < gameBuffer.length) {
    const jumpSize = gameBuffer.readInt8(pos);
    gameBuffer.writeInt8(jumpSize + 1, pos);
    pos += jumpSize;
    counter += 1;
  }

  return counter;
}

// print 5
//console.log(countJumps(Buffer.from([0, 3, 0, 1, -3])));

async function game() {
  let buf = await readJumpFile('./game.txt')
  console.log(countJumps(Buffer.from(buf)),'----')
}

game()

הי הפיתרון מצוין שמח שזכרת לציין את ה encoding של הקובץ (ה utf8)

לגבי קריאה של הקובץ בבלוק אחד או שורה אחרי שורה - זה תלוי בעיקר בגודל הקובץ. קבצים גדולים לפעמים משתלם לקרוא שורה אחרי שורה כי אולי לא כל הקובץ נכנס בזיכרון. בעיקרון בדוגמה כאן זה לא משנה.

כן הייתי מקפיד להוסיף const או let לפני הגדרת המשתנים כלומר:

const fs = require('fs');
const tsp = fs.promises;

ואפשר גם להשתמש בכתיב ה import החדש יותר אם מקפידים על סיומת קובץ mis:

import fs from 'node:fs';