Bootcamp i backendutveckling med Node.js · Lektion

Arbeta med filsystemet och strömmar

Lär dig läsa och skriva filer i Node.js med modulen fs, både synkront och asynkront, och upptäck hur strömmar låter dig bearbeta stora datamängder effektivt.

Lektion 4 av 413 steg

Arbeta med filsystemet och strömmar är en gratis lektion i Bootcamp i backendutveckling med Node.js på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Bootcamp i backendutveckling med Node.js, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Bootcamp i backendutveckling med Node.js innehåller totalt 4 lektioner.

Varför filsystemet är viktigt

De flesta backend-system behöver förr eller senare läsa eller skriva filer på disken – loggar, konfiguration, uppladdningar och rapporter. Nodes inbyggda fs-modul hanterar allt detta; du behöver bara require den.

const fs = require('fs');
console.log(typeof fs.readFile);

Synkront kontra asynkront

De flesta fs-metoder finns i två varianter: sync (som readFileSync) blockerar händelseloopen, medan async inte gör det. På servrar bör du alltid föredra async.

const fs = require('fs');
const data = fs.readFileSync('config.txt', 'utf8');
console.log(data);

Läsa en fil asynkront

Den klassiska callback-varianten ger dig felet först och sedan datan. Kontrollera alltid err innan du använder datan – en fil som saknas eller otillräckliga behörigheter hamnar där.

const fs = require('fs');
fs.readFile('notes.txt', 'utf8', (err, data) => {
  if (err) { console.error('Failed:', err.message); return; }
  console.log('File says:', data);
});

Det promise-baserade API:et

Moderna Node tillhandahåller ett promise-baserat API under fs/promises – det passar perfekt med async/await och eliminerar nästlade callbacks.

const fs = require('fs/promises');
async function load() {
  const data = await fs.readFile('notes.txt', 'utf8');
  console.log(data);
}
load();

Skriva filer

Använd writeFile för att skapa eller skriva över en fil. Finns filen inte? Då skapas den. Finns filen redan? Då ersätts hela innehållet.

const fs = require('fs/promises');
async function save() {
  await fs.writeFile('output.txt', 'Hello from Node!');
  console.log('Saved.');
}
save();

Lägga till i stället för att skriva över

Om du vill lägga till innehåll i en fil utan att radera det som redan finns använder du appendFile – precis vad du behöver för loggfiler som växer rad för rad.

const fs = require('fs/promises');
async function log(line) {
  await fs.appendFile('app.log', line + '\n');
}
log('Server started');

Arbeta med sökvägar

Hårdkodade sökvägar fungerar inte på alla operativsystem. Modulen path löser det: path.join använder rätt avgränsare, och __dirname är mappen där den aktuella filen finns.

const path = require('path');
const full = path.join(__dirname, 'data', 'users.json');
console.log(full);

Kontrollera om en fil finns

Kontrollera inte om filen finns först – det kan leda till race conditions. Försök i stället utföra operationen och fånga felet; en fil som saknas utlöser ett fel med koden ENOENT.

const fs = require('fs/promises');
async function read() {
  try {
    return await fs.readFile('maybe.txt', 'utf8');
  } catch (err) {
    if (err.code === 'ENOENT') return 'default content';
    throw err;
  }
}

Varför strömmar finns

Om du läser en fil på 2 GB med readFile läses hela filen in i minnet – en krasch som bara väntar på att inträffa. Strömmar bearbetar data i små delar, vilket håller minnesanvändningen låg.

const fs = require('fs');
const stream = fs.createReadStream('huge.log', 'utf8');
stream.on('data', chunk => console.log('Got', chunk.length, 'bytes'));

Koppla ihop strömmar

Det kraftfulla med strömmar är pipe: koppla en läsbar ström direkt till en skrivbar. Node hanterar backpressure, så en snabb läsare överbelastar inte en långsam skrivare.

const fs = require('fs');
const read = fs.createReadStream('input.txt');
const write = fs.createWriteStream('copy.txt');
read.pipe(write);

Visa och skapa kataloger

fs-modulen hanterar även mappar: mkdir skapar kataloger (lägg till { recursive: true } för nästlade sökvägar), och readdir listar innehållet.

const fs = require('fs/promises');
async function setup() {
  await fs.mkdir('uploads', { recursive: true });
  const files = await fs.readdir('.');
  console.log(files);
}
setup();

Snabbtest

Testa dina kunskaper om filoperationer.

Sammanfattning

Nu kan du arbeta med filsystemet: synkrona, callback-baserade och promise-baserade API:er i fs, asynkron kod på servrar, grundläggande I/O, plattformsoberoende path samt strömmar för stora filer.

Gratis att börja

Lär dig JavaScript med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
22
Lektioner
92

Vanliga frågor

Är lektionen ”Arbeta med filsystemet och strömmar” gratis?

Ja – hela texten till ”Arbeta med filsystemet och strömmar” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Bootcamp i backendutveckling med Node.js, kan Ni uppgradera till CoddyKit PRO. Kursen i Bootcamp i backendutveckling med Node.js innehåller totalt 4 lektioner.

Vad lär jag mig i ”Arbeta med filsystemet och strömmar”?

Lär dig läsa och skriva filer i Node.js med modulen fs, både synkront och asynkront, och upptäck hur strömmar låter dig bearbeta stora datamängder effektivt. Ni övar på Bootcamp i backendutveckling med Node.js med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Bootcamp i backendutveckling med Node.js?

Du behöver inga förkunskaper. Utbildningen i Bootcamp i backendutveckling med Node.js på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Arbeta med filsystemet och strömmar”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Bootcamp i backendutveckling med Node.js-lektionen?

Ja. Varje Bootcamp i backendutveckling med Node.js-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Introduktion till Node.js och NPM
  2. Node.js modulsystem förklarat
  3. Asynkron JavaScript och händelseloopen
  4. Arbeta med filsystemet och strömmar
← Tillbaka till Bootcamp i backendutveckling med Node.js