Node.js
fs ile kalıcılık
fs ile verileri dosyaya kaydedip yüklersin.
fs ile dosyaya kaydetme
Şimdi görevleri diske kaydedip geri yükleyeceğiz. Node.js'in fs modülü dosya işlemleri yapar. fs.writeFileSync(dosya, veri) veriyi dosyaya yazar; fs.readFileSync(dosya, "utf8") dosyayı dize olarak okur.
Görevleri kaydetmek için JSON.stringify(tasks, null, 2) ile diziyi dizeye çeviririz. null, 2 boşluklu biçimlendirme verir; dosya okunabilir olur. Geri yüklerken JSON.parse(raw) ile dizeyi nesneye çeviririz. readFileSync dosya yoksa hata fırlatır; bu yüzden try/catch içine alıp hata durumunda tasks = [] atarız. Böylece ilk çalıştırmada dosya yoksa uygulama çökmez.
try/catch ile güvenli okuma
loadTasks fonksiyonu try/catch kullanır. try bloğu içinde fs.readFileSync çağrılır; dosya yoksa hata fırlatır. catch bloğu hatayı yakalar ve tasks = [] atar.
Bu desen ilk çalıştırmada dosya henüz yoksa kritiktir. Hata yakalanmazsa uygulama çöker. catch (e) parametresi hata nesnesini alır; biz onu kullanmayız ama adı standart olarak e konur. Bu, hata yönetiminin temel desenidir: beklenen bir hatayı öngörüp güvenli bir varsayılanla devam etmek.
Uygulama saveTasks ve loadTasks fonksiyonlarını ekle
Önceki dersin çözümünü al (fs modülü içe aktarılmış halde). saveTasks() fonksiyonu ekle: fs.writeFileSync(DATA_FILE, JSON.stringify(tasks, null, 2)). loadTasks() fonksiyonu ekle: try/catch ile fs.readFileSync(DATA_FILE, "utf8") oku, JSON.parse(raw) ile tasks'a ata; hatada tasks = []. Son satırlar hazır: addTask("E-posta"); completeTask(1); saveTasks(); console.log("Kaydedildi");
Örnek çözümü göster
const path = require("path");
const fs = require("fs");
const DATA_FILE = path.join("data", "tasks.json");
function createTask(id, title) {
return { id: id, title: title, done: false };
}
let tasks = [];
tasks.push(createTask(1, "Alışveriş"));
function addTask(title) {
const id = tasks.length + 1;
tasks.push(createTask(id, title));
}
function completeTask(id) {
const task = tasks.find(function(t) { return t.id === id; });
if (task) { task.done = true; }
}
function saveTasks() {
fs.writeFileSync(DATA_FILE, JSON.stringify(tasks, null, 2));
}
function loadTasks() {
try {
const raw = fs.readFileSync(DATA_FILE, "utf8");
tasks = JSON.parse(raw);
} catch (e) {
tasks = [];
}
}
addTask("E-posta");
completeTask(1);
saveTasks();
console.log("Kaydedildi");
Kendini test et
-
Hangi metod dosyaya senkron yazar?
fs.writeFileSync(DATA_FILE, data)
- fs.readFile
- fs.open
- fs.appendFile
- fs.writeFileSync
Cevabı göster
fs.writeFileSync — writeFileSync dosyaya senkron yazar.
-
Parçayı rolüne eşle
- fs.writeFileSync
- Diziyi dosyaya yazar
- fs.readFileSync
- Dosyayı dize olarak okur
- JSON.stringify
- Diziyi dizeye çevirir
- JSON.parse
- Dizeyi diziye çevirir
-
saveTasks gövdesini tamamla
function saveTasks() {
fs.____(DATA_FILE, JSON.stringify(tasks, null, 2));
}
Cevabı göster
function saveTasks() {
fs.writeFileSync(DATA_FILE, JSON.stringify(tasks, null, 2));
}
Sıradaki ders: Birleştirme