Você está aqui: Node.js ::: Dicas & Truques ::: Arquivos e Diretórios |
Como usar as funções access() e accessSync() do módulo File System do Node.js para testar a existência de um arquivo ou diretórioQuantidade de visualizações: 2140 vezes |
Em várias situações nós precisamos verificar se um arquivo ou diretório existe antes de procedermos com alguma ação. Entre as várias funções existentes nos módulos do Node.js, as funções access() e accessSync() do módulo File System são as mais comumente usadas para este propósito. Vamos começar com um exemplo no qual usamos a função accessSync() para testar se um determinado arquivo existe: var fs = require("fs"); // importamos o módulo File System // vamos verificar se um determinado arquivo existe var arquivo = "C:\\estudos_dart\\laco_for.dart"; try{ // fs.constants.F_OK verifica se o arquivo existe fs.accessSync(arquivo, fs.constants.F_OK); Ao executarmos este código nós teremos o seguinte resultado: O arquivo C:\estudos_dart\laco_for.dart foi encontrado. Veja que a forma que usamos fs.accessSync neste exemplo provocará um erro do tipo "Error: ENOENT: no such file or directory, access" caso o arquivo ou diretório não existir. Por isso coloquei um bloco try...catch. A constante fs.constants.F_OK reforça que estamos apenas testando a existência do arquivo ou diretório, e não suas permissões. Uma outra observação é que a função accessSync() bloqueia as demais instruções do código. Isso é importante quando queremos verificar a existência do arquivo ou diretório e efetuar uma operação do leitura ou gravação já de imediato. A função access(), por sua vez, é assíncrona, ou seja, enquanto ela está verificando a existência do arquivo ou diretório, outras instruções do código estarão sendo executadas, o que pode acarretar situações de bloqueio ou resultados indesejados. Fique atento a isso ao planejar suas aplicações Node.js. Veja um exemplo do uso da função access() para verificar se um diretório existe no sistema: var fs = require("fs"); // importamos o módulo File System // vamos verificar se um determinado diretório existe var diretorio = "C:\\estudos_java"; // atenção! Estamos usando código assíncrono aqui fs.access(diretorio, fs.constants.F_OK, (erro) => { if(!erro){ console.log('O diretório ' + diretorio + ' existe.'); Ao executar este código nós teremos um resultado parecido com: O diretório C:\estudos_java existe. Observe que, como é costume com funções assíncronas, nós fornecemos uma função de callback para a função fs.access(). Dessa forma, enquanto esta parte do código está sendo executada, outras instruções externas à chamada da função estarão também realizando mais operações no programa. Por fim, tenha em mente que as funções access() e accessSync() são adequadas para verificar a existência e permissões de arquivos e diretórios. Se o objetivo for testar a existência do arquivo e depois ler a partir dele ou efetuar escrita, então as funções fs.open(), fs.readFile() e fs.writeFile() são mais adequadas, já que elas retornam um erro se o arquivo ou diretório não existir. |
![]() |
Veja mais Dicas e truques de Node.js |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |