Je n'arrive pas à obtenir de résultats de recherche expliquant comment procéder.
Tout ce que je veux faire, c'est savoir si un chemin donné est un fichier ou un répertoire (dossier).
fs.lstatSync(path_string).isDirectory()
devrait vous dire. De la documentation :
Les objets renvoyés par fs.stat () et fs.lstat () sont de ce type.
stats.isFile() stats.isDirectory() stats.isBlockDevice() stats.isCharacterDevice() stats.isSymbolicLink() (only valid with fs.lstat()) stats.isFIFO() stats.isSocket()
La solution ci-dessus sera throw
un Error
if; par exemple, le file
ou directory
n'existe pas.
Si vous voulez une approche true
ou false
, essayez fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
comme mentionné par Joseph dans les commentaires ci-dessous.
let isDirExists = fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
Mise à jour: Node.Js> = 10
Nous pouvons utiliser la nouvelle API fs.promises
Toute version de Node.Js
Voici comment vous pourriez détecter si un chemin est un fichier ou un répertoire de manière asynchrone , ce qui est l'approche recommandée dans le nœud. en utilisant fs.lstat
Remarque lors de l'utilisation de l'API synchrone:
la source
Sérieusement, la question existe depuis cinq ans et pas de belle façade?
la source
Selon vos besoins, vous pouvez probablement compter sur le
path
module du nœud .Vous ne pourrez peut-être pas toucher le système de fichiers (par exemple, le fichier n'a pas encore été créé) et tbh vous voudrez probablement éviter de frapper le système de fichiers à moins d'avoir vraiment besoin de la validation supplémentaire. Si vous pouvez faire l'hypothèse que ce que vous recherchez respecte le
.<extname>
format, regardez simplement le nom.Évidemment, si vous recherchez un fichier sans nom extensible, vous devrez frapper le système de fichiers pour être sûr. Mais restez simple jusqu'à ce que vous ayez besoin de plus de complication.
la source
Les réponses ci-dessus vérifient si un système de fichiers contient un chemin d'accès qui est un fichier ou un répertoire. Mais il n'identifie pas si un chemin donné seul est un fichier ou un répertoire.
Comme le chemin d'un répertoire ou d'un fichier qui n'a pas encore été écrit. Ou un chemin depuis un autre ordinateur. Ou un chemin où existent à la fois un fichier et un répertoire du même nom.
Version du nœud: v11.10.0 - février 2019
la source
Voici une fonction que j'utilise. Personne n'utilise
promisify
et neawait/async
figure dans ce post, j'ai donc pensé partager.Remarque: je ne l'utilise pas
require('fs').promises;
car il est expérimental depuis un an maintenant, il vaut mieux ne pas s'y fier.la source