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.
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.
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
- Introduktion till Node.js och NPM
- Node.js modulsystem förklarat
- Asynkron JavaScript och händelseloopen
- Arbeta med filsystemet och strömmar