详情内容

node判断文件存在的两种方式

fs.exists(path, callback)

增加于node v0.0.2,自v1.0.0后弃用

替换的方法有:fs.stat()或fs.access()

参数说明:

path:字符串或缓冲区数据

callback:回调函数

通过检查文件系统测试给定路径是否存在。然后用真或假调用回调参数。例子:

fs.exists('/etc/passwd', (exists) => {
  console.log(exists ? '文件存在' : '不存在!');});

注意,这个回调的参数不能与其他js回调一致。通常,一个js回调函数的第一个参数是一个错误的参数,或者跟着其他参数。fs.exists()回调只有一个布尔参数。这是一个原因,fs.access()是不是建议fs.exists()。

fs.exists('/etc/passwd', function(exists){
    if (exists) {
        console.log("存在!");
    } else {
        console.log("不存在");
    }
});

使用fs.exists()之前调用FS检查一个文件是否存在。fs.open(),fs.readFile()或fs.writeFile()不推荐。这样做会引入一个竞争条件,因为其他进程可能会改变两个调用之间的文件状态.。相反,用户代码应该直接打开/读取/写入文件,并处理如果文件不存在所引发的错误.。

例如:

写操作(不推荐)

fs.exists('myfile', (exists) => {
  if (exists) {
    console.error('myfile already exists');
  } else {
    fs.open('myfile', 'wx', (err, fd) => {
      if (err) throw err;
      writeMyData(fd);
    });
}});

写(推荐)

fs.open('myfile', 'wx', (err, fd) => {
  if (err) {
    if (err.code === "EEXIST") {
      console.error('myfile already exists');
      return;
    } else {
      throw err;
    }
  }
  writeMyData(fd);
});

读(不推荐)

fs.exists('myfile', (exists) => {
  if (exists) {
    fs.open('myfile', 'r', (err, fd) => {
      readMyData(fd);
    });
  } else {
    console.error('myfile does not exist');
}});

读(推荐)

fs.open('myfile', 'r', (err, fd) => {
  if (err) {
    if (err.code === "ENOENT") {
      console.error('myfile does not exist');
      return;
    } else {
      throw err;
    }
  } else {
    readMyData(fd);
}});

上面的“不推荐”的例子检查存在,然后使用该文件;“推荐”的例子是更好的,因为他们直接使用该文件和处理错误,如果有。

在一般情况下,检查文件的存在,只有当文件不会被直接使用,例如,当它的存在是从另一个进程的信号。

fs.existsSync(path)

增加于node v0.1.21

参数说明:

path 字符串或缓冲区数据

fs.exists()的同步版本。返回true如果文件存在,否则返回false。

注意,fs.exists()已过时,但fs.existsSync()没有过时。(callback参数是fs.exists()接受的参数,与其他NodeJs回调不一致。FS.existssync()不使用回调。)

例子:

if (fs.existsSync("/etc/passwd")) {
    console.log("文件存在");
} else {
    console.log("文件不存在");
}


 
友情链接:
联系方式:
相关网站:
邮箱:473166512@qq.com
邮箱:admin@okgoes.com
Copyright © 2014-2016 完美起航. 版权所有
Powered by 完美起航 V1.3( 赣ICP备15002760号 )