69 lines
1.7 KiB
JavaScript
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);
|
|
}
|
|
}); |