檢測(cè)方法:1、使用“fs.exists(path,callback)”;2、使用“await util.promisify(fs.stat)('文件路徑')”;3、使用“fs.access(path[,mode],callback);”。
本教程操作環(huán)境:windows7系統(tǒng)、nodejs 14.15.4版,DELL G3電腦。
nodejs檢測(cè)文件是否存在的方法:
1、使用fs.exists
exists()函數(shù)可以測(cè)試某個(gè)路徑下的文件是否存在。語(yǔ)法格式:
fs.exists(path, callback)
-
path 欲檢測(cè)的文件路徑
-
callback 回調(diào)
-
回調(diào)函數(shù)包含一個(gè)參數(shù)exists,true則文件存在,否則是false。
-
注:由于該方法屬于fs模塊,使用前需要引入fs模塊(var fs= require(“fs”) )
目前 fs.exists 已被廢棄,另外需要清楚, 只有在文件不直接使用時(shí)才去檢查文件是否存在
示例:
fs.exists('/etc/passwd', function (exists) { util.debug(exists ? "it's there" : "no passwd!"); });
2、使用 fs.stat
fs.stat返回一個(gè) fs.Stats 對(duì)象,該對(duì)象提供了關(guān)于文件的很多信息,例如文件大小、創(chuàng)建時(shí)間等。其中有兩個(gè)方法 stats.isDirectory()、stats.isFile() 用來(lái)判斷是否是一個(gè)目錄、是否是一個(gè)文件。
const stats = await util.promisify(fs.stat)('text1.txt'); console.log(stats.isDirectory()); // false console.log(stats.isFile()); // true
若只是檢查文件是否存在,推薦使用下面的 fs.access。
3、使用 fs.access
fs.access 接收一個(gè) mode 參數(shù)可以判斷一個(gè)文件是否存在、是否可讀、是否可寫,返回值為一個(gè) err 參數(shù)。
const file = 'text.txt'; // 檢查文件是否存在于當(dāng)前目錄中。 fs.access(file, fs.constants.F_OK, (err) => { console.log(`${file} ${err ? '不存在' : '存在'}`); }); // 檢查文件是否可讀。 fs.access(file, fs.constants.R_OK, (err) => { console.log(`${file} ${err ? '不可讀' : '可讀'}`); }); // 檢查文件是否可寫。 fs.access(file, fs.constants.W_OK, (err) => { console.log(`${file} ${err ? '不可寫' : '可寫'}`); }); // 檢查文件是否存在于當(dāng)前目錄中、以及是否可寫。 fs.access(file, fs.constants.F_OK | fs.constants.W_OK, (err) => { if (err) { console.error( `${file} ${err.code === 'ENOENT' ? '不存在' : '只可讀'}`); } else { console.log(`${file} 存在,且可寫`); } });
【推薦學(xué)習(xí):《nodejs 教程》】