指定node.js中是否存在文件

时间:2018-02-11 16:18:50

标签: node.js sails.js

我使用此代码指定文件是否存在:

if(fs.exists('../../upload/images/book/2.jpg')){
    console.log("yes the file exist");
} else{
        console.log("there is no file");
      }  

虽然文件在那里,但总是说它不存在(没有文件) 我也使用fs.stat(...),但它再次给出了结果(没有文件)

文件夹结构:

root_app  
--------|.tmp  
--------|api  
------------|controllers  
------------------------|BookContoller.js (My code run from here)
--------|...(And the rest of the folders)  
--------|upload  
---------------|images  
----------------------|book  
---------------------------|2.jpg

谢谢

2 个答案:

答案 0 :(得分:1)

fs.exists是异步的。要使代码正常工作,您只需将其更改为fs.existsSync

此外,您的文件路径错误,您需要使用path.resolve__dirname,因此脚本会知道在哪里找到该文件。

if(fs.existsSync(path.resolve('../../upload/images/book/2.jpg'))) {

参见文档:

答案 1 :(得分:0)

我的问题解决了 显然,我们应该使用fs.accessSync()或fs.access()而不是fs.exists()
Check out this link

也可以执行此程序:

function Custom_existsSync(filename) {
  try {
    fs.accessSync(filename);
    return true;
  } catch(ex) {
    return false;
  }  

if(Custom_existsSync(filename)){
    ....
}  

感谢所有帮助过我的人