Среда выполнения Deno TypeScript имеет встроенные функции, но ни один из них не касается проверки существования файла или каталога. Как проверить, существует ли файл или каталог?






Не существует функции, специально предназначенной для проверки существования файла или каталога, но функция Deno.stat, которая возвращает метаданные о пути, может использоваться для этой цели путем проверки потенциальных ошибок по Deno.ErrorKind.NotFound.
const exists = async (filename: string): Promise<boolean> => {
try {
await Deno.stat(filename);
// successful, file or directory must exist
return true;
} catch (error) {
if (error && error.kind === Deno.ErrorKind.NotFound) {
// file or directory does not exist
return false;
} else {
// unexpected error, maybe permissions, pass it along
throw error;
}
}
};
exists("test.ts").then(result =>
console.info("does it exist?", result)); // true
exists("not-exist").then(result =>
console.info("does it exist?", result)); // false
API Deno изменился с момента выпуска Deno 1.0.0. Если файл не найден, возникает исключение Deno.errors.NotFound
const exists = async (filename: string): Promise<boolean> => {
try {
await Deno.stat(filename);
// successful, file or directory must exist
return true;
} catch (error) {
if (error instanceof Deno.errors.NotFound) {
// file or directory does not exist
return false;
} else {
// unexpected error, maybe permissions, pass it along
throw error;
}
}
};
exists("test.ts").then(result =>
console.info("does it exist?", result)); // true
exists("not-exist").then(result =>
console.info("does it exist?", result)); // false
As the original answer account is suspended and cannot change his answer if I comment on it, I'm reposting a fixed code snippet.
Функция exists на самом деле является частью модуля std/fs, хотя в настоящее время она помечена как нестабильная. Это значит, что вам нужно deno run --unstable: https://deno.land/std/fs/README.md#exists
Вот реализация стандартной библиотеки, здесь: https://deno.land/std/fs/mod.ts
import {existsSync} from "https://deno.land/std/fs/mod.ts";
const pathFound = existsSync(filePath)
console.info(pathFound)
Этот код напечатает true, если путь существует, и false, если нет.
И это асинхронная реализация:
import {exists} from "https://deno.land/std/fs/mod.ts"
exists(filePath).then((result : boolean) => console.info(result))
Убедитесь, что вы запускаете deno с флагом нестабильности и предоставляете доступ к этому файлу:
deno run --unstable --allow-read = {filePath} index.ts