nodejs如何獲取指定路徑下所有的文件夾名或類型
獲取指定路徑下所有的文件夾名或類型
let components = [] const files = fs.readdirSync('./components') files.forEach(function (item, index) { let stat = fs.statSync("./components/" + item) if (stat.isDirectory() === true) { components.push(item) } }) console.log(components); //============================= //檢測文件夾下文件是文件夾還是文件 模塊 const fs = require('fs'); function textFile(str) { let arr = fs.readdirSync(str); console.log(arr); let obj = {}; arr.forEach((val, idx) => { // console.log(val) let ph = fs.statSync(str + '/' + val); if (ph.isDirectory()) { // console.log(`${val} 是文件夾`); obj[val] = '文件夾'; } else { // console.log(`${val} 是文件`); obj[val] = '文件'; } }) return obj; } const my = require('./my'); console.log(my.textFile('./homework'));
nodejs文件操作
node文件操作又稱為文件操作模塊,是nodejs內(nèi)置的文件操作模塊。主要由兩部分組成。第一部分文件操作,可以對文件進(jìn)行讀,寫,剪切,刪除基本操作,第二部分文件夾操作,可以對文件夾進(jìn)行讀,寫,刪除,獲取文件夾內(nèi)容基本操作。
注:在使用改模塊時(shí)里面的所有要使用的路徑必須為絕對路徑。
首先在文件里引入文件模塊
let fs=require('fs');
其中前面的fs為變量名用來接收文件模塊的對象實(shí)例。后面的fs為需要引用的模塊名。
文件操作
寫入文件(異步)
語法:
let fs = require('fs'); fs.writeFile(`${__dirname}/1.json`,data,err=>{ ? ? if(err){ ? ? ? ? console.log('有錯(cuò)誤'); ? ? } })
可以將文件寫入指定路徑的文件里
參數(shù)詳解
`${__dirname}/1.json`
:數(shù)據(jù)要寫入的文件所在的絕對地址data
:要寫入的數(shù)據(jù)err
:當(dāng)寫入文件時(shí)發(fā)生錯(cuò)誤的回調(diào)函數(shù)
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。若路徑?jīng)]有問題則不論文件是否存在都會(huì)寫入文件中去,若文件不存在則會(huì)創(chuàng)建一個(gè)文件并把數(shù)據(jù)寫入文件里。
寫入文件(同步)
語法:
let fs = require('fs'); fs.writeFileSync(`__dirname/1.json`,data);
`${__dirname}/1.json`
:數(shù)據(jù)要寫入的文件所在的絕對地址data
:要寫入的數(shù)據(jù)
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。若路徑?jīng)]有問題則不論文件是否存在都會(huì)寫入文件中去,若文件不存在則會(huì)創(chuàng)建一個(gè)文件并把數(shù)據(jù)寫入文件里。當(dāng)發(fā)生錯(cuò)誤時(shí)會(huì)報(bào)錯(cuò)并終止程序運(yùn)行。
若想使用同步且文件寫入發(fā)生錯(cuò)誤程序不會(huì)停止運(yùn)行時(shí)需要使用try {}catch{}方法
語法
let fs = require('fs'); try { ? ? fs.writeFileSync(`__dirname/1.json`, data); } catch (e) { ? ? console.log(e); }
e:發(fā)生的錯(cuò)誤參數(shù),但不會(huì)影響程序正常運(yùn)行。
讀取文件(異步)
語法
let fs = require('fs'); fs.readFile(`${__dirname}/1.json`, (err, data) => { ? ? if (e) { ? ? ? ? console.log('有錯(cuò)誤'); ? ? } ? ? console.log(data); })
可以讀取路徑所在的文件數(shù)據(jù)
參數(shù)詳解
`${__dirname}/1.json`
:數(shù)據(jù)要讀取的文件所在的絕對地址err
:當(dāng)讀取文件時(shí)發(fā)生錯(cuò)誤的回調(diào)函數(shù)data
:讀取出來的數(shù)據(jù)(buffer類型)
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。所輸入的路徑中不存在該文件。
讀取文件(同步)
語法
let fs = require('fs'); let data = fs.readFileSync(`${__dirname}/1.json`);
`${__dirname}/1.json`
:數(shù)據(jù)要讀取的文件所在的絕對地址data
:讀取出的數(shù)據(jù)(buffer類型)
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。當(dāng)發(fā)生錯(cuò)誤時(shí)會(huì)報(bào)錯(cuò)并終止程序運(yùn)行。
若想使用同步且文件讀取發(fā)生錯(cuò)誤程序不會(huì)停止運(yùn)行時(shí)需要使用try {}catch{}方法
語法
let fs = require('fs'); try { ? ? let data = fs.readFileSync(`${__dirname}/1.json`); } catch (e) { ? }
e:發(fā)生的錯(cuò)誤參數(shù),但不會(huì)影響程序正常運(yùn)行。
文件修改/文件剪切(異步)
語法
let fs = require('fs'); fs.rename(`${__dirname}/1.json`,`${__dirname}/2.json`, ?err => { ? ? if (err) { ? ? ? ? console.log('有錯(cuò)誤'); ? ? } ?? })
可以將文件從一個(gè)地址轉(zhuǎn)移到另一個(gè)地址
參數(shù)詳解
`${__dirname}/1.json`
:文件所在的原始絕對地址`${__dirname}/2.json`
:文件要移動(dòng)到的新地址err
:當(dāng)修改文件時(shí)發(fā)生錯(cuò)誤的回調(diào)函數(shù)
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。所輸入的路徑中不存在該文件。
修改文件 /文件剪切(同步)
語法
let fs = require('fs'); fs.renamesync(`${__dirname}/1.json`,`${__dirname}/2.json`);
`${__dirname}/1.json`
:文件所在的原始絕對地址`${__dirname}/2.json`
:文件要移動(dòng)到的新地址
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。當(dāng)發(fā)生錯(cuò)誤時(shí)會(huì)報(bào)錯(cuò)并終止程序運(yùn)行。
若想使用同步且文件修改發(fā)生錯(cuò)誤程序不會(huì)停止運(yùn)行時(shí)需要使用try {}catch{}方法
語法
let fs = require('fs'); try { ? ? fs.renamesync(`${__dirname}/1.json`, `${__dirname}/2.json`); } catch (e) { ? }
e:發(fā)生的錯(cuò)誤參數(shù),但不會(huì)影響程序正常運(yùn)行。
刪除文件(異步)
語法:
let fs = require('fs'); fs.unlink(`${__dirname}/1.json`,err=>{ ? ? if(err){ ? ? ? ? console.log('有錯(cuò)誤'); ? ? } })
可以刪除指定路徑的文件
參數(shù)詳解
`${__dirname}/1.json`
:要?jiǎng)h除的文件所在的絕對地址err
:當(dāng)刪除文件時(shí)發(fā)生錯(cuò)誤的回調(diào)函數(shù)
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。找不到所刪除的文件。
注:一次只能刪除一個(gè)文件
刪除文件(同步)
語法:
let fs = require('fs'); fs.unlinksync(`__dirname/1.json`);
`${__dirname}/1.json`
:要?jiǎng)h除的文件所在的絕對地址
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。當(dāng)發(fā)生錯(cuò)誤時(shí)會(huì)報(bào)錯(cuò)并終止程序運(yùn)行。
若想使用同步且刪除寫入發(fā)生錯(cuò)誤程序不會(huì)停止運(yùn)行時(shí)需要使用try {}catch{}方法
語法
let fs = require('fs'); try { ? ? fs.unlinksync(`__dirname/1.json`); } catch (e) { ? ? console.log(e); }
e:發(fā)生的錯(cuò)誤參數(shù),但不會(huì)影響程序正常運(yùn)行。
文件夾操作
創(chuàng)建文件夾(異步)
語法
let fs = require('fs'); fs.mkdir(`${__dirname}`,err=>{ ? ?? })
一次只能創(chuàng)建一個(gè)空的文件夾,不能創(chuàng)建文件
`${__dirname}`
:要?jiǎng)?chuàng)建文件夾的路徑err
:創(chuàng)建文件夾發(fā)生錯(cuò)誤的回調(diào)函數(shù)
創(chuàng)建文件夾(同步)
語法
let fs = require('fs'); fs.mkdirSync(`${__dirname}`);
`${__dirname}`
:要?jiǎng)?chuàng)建文件夾的路徑
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。當(dāng)發(fā)生錯(cuò)誤時(shí)會(huì)報(bào)錯(cuò)并終止程序運(yùn)行
若想使用同步且創(chuàng)建文件夾發(fā)生錯(cuò)誤程序不會(huì)停止運(yùn)行時(shí)需要使用try {}catch{}方法
語法
let fs = require('fs'); const { dirname } = require('path'); try{fs.mkdirSync(`${__dirname}`)} catch(e){ ? ? if(e){ ? ? ? ? console.log('發(fā)生錯(cuò)誤'); ? ? } }
e:發(fā)生的錯(cuò)誤參數(shù),但不會(huì)影響程序正常運(yùn)行。
讀取文件夾(異步)
語法
let fs = require('fs'); fs.readdie(`${__dirname}`,(err,file)=>{ if(err){console.log('有錯(cuò)誤')}? ? ?? })
一次只能讀取一個(gè)文件夾,不能讀取文件
`${__dirname}`
:要讀取文件夾的路徑err
:讀取文件夾發(fā)生錯(cuò)誤的回調(diào)函數(shù)file
:返回一個(gè)以所有文件夾名組成的數(shù)組
讀取文件夾(同步)
語法
let fs = require('fs'); let arr=fs.raeddirsync(`${__dirname}`);
`${__dirname}`
:要?jiǎng)?chuàng)建文件夾的路徑arr
:返回一個(gè)以所有文件夾名組成的數(shù)組
發(fā)生錯(cuò)誤,輸入的文件路徑有問題。當(dāng)發(fā)生錯(cuò)誤時(shí)會(huì)報(bào)錯(cuò)并終止程序運(yùn)行
若想使用同步且讀取文件夾發(fā)生錯(cuò)誤程序不會(huì)停止運(yùn)行時(shí)需要使用try {}catch{}方法
語法
let fs = require('fs'); const { dirname } = require('path'); try{let arr=fs.readdirsync(`${__dirname}`)} catch(e){ ? ? if(e){ ? ? ? ? console.log('發(fā)生錯(cuò)誤'); ? ? } }
e:發(fā)生的錯(cuò)誤參數(shù),但不會(huì)影響程序正常運(yùn)行。
獲取文件信息
用來獲取文件夾里面的各個(gè)文件的信息,判斷是否是文件還是文件夾
let fs = require('fs'); fs.stat(`${__dirname}`, (err, stats) => { if(err){ console.log('錯(cuò)誤') ? }else{ stras.isFile() stras.isDirectory(); )
`${__dirname}`
:要?jiǎng)?chuàng)建文件夾的路徑stras.isFile()
判斷是否是文件。stras.isDirectory()
;判斷是否為文件夾。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Node.js中Request模塊處理HTTP協(xié)議請求的基本使用教程
這篇文章主要介紹了Node.js中Request模塊處理HTTP請求的基本使用教程,request也支持OAuth的簽名請求,很好很強(qiáng)大,需要的朋友可以參考下2016-03-03node.js中ws模塊創(chuàng)建服務(wù)端與客戶端實(shí)例代碼
在Node.js中提供了http模塊與https模塊,專用于創(chuàng)建HTTP服務(wù)器、HTTP客戶端,以及HTTPS服務(wù)器及HTTPS客戶端,同時(shí)實(shí)現(xiàn)這些服務(wù)器端與客戶端之中所需進(jìn)行的處理,下面這篇文章主要給大家介紹了關(guān)于node.js中ws模塊創(chuàng)建服務(wù)端與客戶端的相關(guān)資料,需要的朋友可以參考下2023-05-05Node.js使用第三方插件nodemailer實(shí)現(xiàn)郵件發(fā)送示例
這篇文章主要為大家介紹了Node.js使用第三方插件nodemailer實(shí)現(xiàn)郵件發(fā)送示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11使用Raygun對Node.js應(yīng)用進(jìn)行錯(cuò)誤處理的方法
這篇文章主要介紹了使用Raygun對Node.js應(yīng)用進(jìn)行錯(cuò)誤處理的方法,Node.js是一款用于服務(wù)器端的JavaScript框架,需要的朋友可以參考下2015-06-06node pnpm修改默認(rèn)包的存儲(chǔ)路徑(操作方法)
PNPM是一個(gè)新的包管理工具,也是NPM的另一個(gè)替代方案,與NPM不同,PNPM使用符號鏈接(symlink)而不是復(fù)制文件來安裝包,這篇文章主要介紹了node pnpm修改默認(rèn)包的存儲(chǔ)路徑,需要的朋友可以參考下2024-05-05node.js+captchapng+jsonwebtoken實(shí)現(xiàn)登錄驗(yàn)證示例
本篇文章主要介紹了node.js+captchapng+jsonwebtoken實(shí)現(xiàn)登錄驗(yàn)證示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08