Files
m1-sor-exercises/exercice4.js
2026-01-16 20:25:02 +01:00

69 lines
1.7 KiB
JavaScript

function readFile(path, charset) {
throw new Error("Function not implemented.");
}
function readTextFileIfExists(path) {
return new Promise((resolve, reject) => {
if (!path) {
reject(new Error("No file path provided"));
return;
}
readFile(path, "utf8")
.then(data => {
if (data.length === 0) {
reject(new Error("File is empty")); // explicit failure
} else {
resolve(data); // successful read
}
})
.catch(err => reject(err)); // I/O error
});
}
readTextFileIfExists("data.txt")
.then(text => console.log("File contents:", text))
.catch(err => console.error("I/O error:", err.message));
try {
const text = await readTextFileIfExists("data.txt");
console.log("File contents:", text);
} catch (err) {
console.error("I/O error:", err.message);
}
const files = ["file1.txt", "file2.txt", "file3.txt"];
for (const file of files) {
try {
const text = await readTextFileIfExists(file);
console.log("File contents:", text);
} catch (err) {
console.error("I/O error:", err.message);
continue;
}
}
const otherFiles = ["does_not_exist.txt", "file2.txt", "file3.txt"];
const failContents = await Promise.all(
otherFiles.map(readTextFileIfExists)
);
try {
failContents.forEach((text, i) => {
console.log("File contents:", text);
});
} catch (err) {
console.error("I/O error:", err.message);
}
const successContents = await Promise.allSettled(
files.map(readTextFileIfExists)
);
successContents.forEach((result, i) => {
if (result.status === "fulfilled") {
console.log("File contents:", result.value);
} else if (result.status === "rejected") {
console.error("I/O error:", result.reason);
}
});