Não consigo obter nenhum resultado de pesquisa que explique como fazer isso.
Tudo o que quero fazer é saber se um determinado caminho é um arquivo ou um diretório (pasta).
fs.lstatSync(path_string).isDirectory()
deveria te contar. Dos documentos :
Os objetos retornados de fs.stat () e fs.lstat () são desse tipo.
stats.isFile() stats.isDirectory() stats.isBlockDevice() stats.isCharacterDevice() stats.isSymbolicLink() (only valid with fs.lstat()) stats.isFIFO() stats.isSocket()
A solução acima será throw
um Error
if; por exemplo, o file
ou directory
não existe.
Se você quer uma true
ou false
abordagem, tente fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
como mencionado por Joseph nos comentários abaixo.
let isDirExists = fs.existsSync(dirPath) && fs.lstatSync(dirPath).isDirectory();
Atualização: Node.Js> = 10
Podemos usar a nova API fs.promises
Qualquer versão do Node.Js
Veja como você detectaria se um caminho é um arquivo ou um diretório assincronamente , que é a abordagem recomendada no nó. usando fs.lstat
Observe ao usar a API síncrona:
fonte
Sério, a pergunta existe há cinco anos e nenhuma fachada agradável?
fonte
Dependendo de suas necessidades, você provavelmente pode confiar no
path
módulo do nó .Você pode não conseguir acessar o sistema de arquivos (por exemplo, o arquivo ainda não foi criado) e provavelmente deseja evitar atingi-lo, a menos que realmente precise da validação extra. Se você puder supor que o que você está procurando segue o
.<extname>
formato, basta olhar para o nome.Obviamente, se você estiver procurando por um arquivo sem um nome ext, precisará acessar o sistema de arquivos para ter certeza. Mas mantenha as coisas simples até que você precise de mais complicações.
fonte
As respostas acima verificam se um sistema de arquivos contém um caminho que é um arquivo ou diretório. Mas ele não identifica se um determinado caminho sozinho é um arquivo ou diretório.
Como um caminho de um diretório ou arquivo que ainda não foi gravado. Ou um caminho de um computador diferente. Ou um caminho em que existe um arquivo e um diretório com o mesmo nome.
Versão do nó: v11.10.0 - fev 2019
fonte
Aqui está uma função que eu uso. Ninguém está usando
promisify
eawait/async
destacado neste post, então pensei em compartilhar.Nota: eu não uso
require('fs').promises;
porque já é experimental há um ano, é melhor não confiar nele.fonte