Η ενότητα fs (File System) του Node.js παρέχει API για αλληλεπίδραση με το τοπικό σύστημα αρχείων χρησιμοποιώντας Promises, callbacks ή σύγχρονη εκτέλεση.
API βασισμένο σε Promises (fs/promises)
const fs = require('fs/promises');
// import fs from 'node:fs/promises';
// Ανάγνωση αρχείου ως συμβολοσειρά UTF-8
const content = await fs.readFile('data.txt', 'utf8');
// Εγγραφή ή αντικατάσταση περιεχομένου αρχείου
await fs.writeFile('output.txt', 'Hello World', 'utf8');
// Προσάρτηση δεδομένων στο αρχείο
await fs.appendFile('log.txt', 'New entry\n', 'utf8');
// Έλεγχος ύπαρξης και δικαιωμάτων πρόσβασης
try {
await fs.access('config.json');
} catch {
console.log('Το αρχείο δεν υπάρχει ή δεν είναι προσβάσιμο');
}
Σύγχρονο API
const fs = require('fs');
const data = fs.readFileSync('input.txt', 'utf8');
fs.writeFileSync('output.txt', data);
fs.appendFileSync('output.txt', '\nappended');
const exists = fs.existsSync('file.txt');
Μεταδεδομένα και Κατάσταση Αρχείων (fs.stat)
const stats = await fs.stat('file.txt');
stats.isFile(); // -> κανονικό αρχείο (true / false)
stats.isDirectory(); // -> κατάλογος (true / false)
stats.isSymbolicLink(); // -> συμβολικός σύνδεσμος (true / false)
stats.size; // Μέγεθος αρχείου σε bytes
stats.mtime; // Χρονική σήμανση τελευταίας τροποποίησης
Λειτουργίες Καταλόγων
// Καταγραφή περιεχομένων καταλόγου
const files = await fs.readdir('src/');
// Αναδρομική δημιουργία καταλόγων
await fs.mkdir('build/assets/css', { recursive: true });
// Αναδρομική διαγραφή καταλόγων
await fs.rm('dist/', { recursive: true, force: true });
Παρακολούθηση Συστήματος Αρχείων (fs.watch)
const fs = require('fs');
const watcher = fs.watch('src/', { recursive: true }, (eventType, filename) => {
console.log(`Event: ${eventType} on ${filename}`);
});
// Διακοπή παρακολούθησης
watcher.close();
Περιγραφείς Αρχείων (File Descriptors)
const fs = require('fs/promises');
// Άνοιγμα μόνο για ανάγνωση
const filehandle = await fs.open('archive.bin', 'r');
// Δέσμευση buffer 1024 bytes
const buffer = Buffer.alloc(1024);
// Ανάγνωση bytes στον buffer
const { bytesRead } = await filehandle.read(buffer, 0, 1024, 0);
await filehandle.close();