Ako zistiť, že poskytnutá cesta je súbor alebo adresár v Node.js?

Ako Zistit Ze Poskytnuta Cesta Je Subor Alebo Adresar V Node Js



Detekcia entity súboru je dôležitá najmä vtedy, keď sa vaše aplikácie zaoberajú správou súboru alebo ukladajú používateľské údaje do špecifických adresárov. Pretože jeden adresár môže obsahovať niekoľko súborov, operácia, ktorá sa naň môže použiť, zahŕňa presun súborov do iného adresára alebo vymazanie všetkých uložených súborov.

To isté platí pre súbor, jeho operácie môžu zahŕňať úpravu súboru, vloženie údajov do súboru alebo vymazanie jedného súboru. Celá aplikácia bude zmätená, ak vývojár aplikuje operácie so súbormi nad adresármi alebo naopak.

Tento článok ilustruje prístupy na zistenie, či je poskytnutá cesta súborom alebo adresárom, a to tak, že pokryje tieto metódy:







Ako zistiť, že poskytnutá cesta je súbor alebo adresár v Node.js?

Existujú dva spôsoby, ktoré poskytuje „ fs “modul, konkrétne “ isDirectory() “ a „ isFile() “, ktorého jediným účelom je skontrolovať, či poskytnutá cesta vedie k súboru alebo adresáru. Tieto metódy sa používajú v synchrónnych aj asynchrónnych scenároch pomocou „ statSync() “ a „ stat() “ metódy. Tieto dve metódy sú uvedené nižšie na zistenie, či poskytnutá cesta vedie k súboru alebo adresáru.



Metóda 1: Metóda „statSync()“ na zistenie cesty vedie k adresáru alebo súboru

' statSync() “metóda poskytovaná spoločnosťou “ fs “ sa v podstate používa na vykonávanie synchrónnych operácií. Táto metóda v našom prípade ukladá inštanciu poskytnutej cesty iba raz. Potom priradí „ isDirectory() “ a „ isFile() ” metódy na vrátenie, či zadaná cesta vedie do adresára alebo súboru.



Pozrime sa na nižšie uvedený úryvok kódu pre praktickú implementáciu metódy „statSync()“:





konšt fsObj = vyžadovať ( 'fs' ) ;

nechajte pathFile = fsObj. statSync ( '/Users/kahou/Documents/readlineProj/mcu.db' ) ;

konzola. log ( „Je poskytnutá vedúca cesta k súboru? ' + pathFile. isFile ( ) ) ;

pathDir = fsObj. statSync ( '/Users/kahou/Documents/readlineProj' ) ;

konzola. log ( 'Je poskytnutá cesta vedie do adresára? ' + pathDir. isDirectory ( ) ) ;

Vysvetlenie vyššie uvedeného kódu je uvedené nižšie:

  • Najprv importujte súbor „ fs “ a uložte jeho inštanciu do “ fsObj “premenná.
  • Potom vyvolajte „ statSync() “ pomocou metódy “ fsObj ” premennej a prejdite vybranú cestu do jej zátvoriek. Uložte odkaz na túto cestu do „ pathFile “premenná.
  • Ďalej priraďte „ isFile() “ metóda s “ pathFile ” a vráti boolovskú hodnotu, ktorá ukáže, či poskytnutá cesta vedie k súboru alebo nie.
  • Potom znova vyvolajte „ statSync() “ a prejsť novou cestou.
  • Nakoniec pripojte „ isDirectory() ” s hodnotou vrátenou funkciou “ startSync() “.

Teraz spustite aktuálny súbor pomocou nižšie uvedeného príkazu:



'node '

Napríklad sme spustili súbor „app.js“:

Výstup zobrazuje hodnotu „ pravda ” znamená, že poskytnuté cesty sú pre priečinok a súbor bol zistený.

Metóda 2: Metóda „stat()“ na zistenie cesty vedie k adresáru alebo súboru

Ďalšia metóda, ktorá dokonale funguje pre asynchrónne prostredie, je známa ako „ stat() “, ktorý poskytuje „ fs “. Používa tiež to isté „ isFile() “ a „ isDirectory() “, ale vďaka svojej asynchrónnej povahe môže byť jedna cesta odovzdaná obom metódam. Má dva parametre, prvý ukladá cestu a druhý je funkcia spätného volania, ktorá vykonáva niektoré operácie cez poskytnutú cestu:

konšt fsObj = vyžadovať ( 'fs' ) ,
testPath = '/Users/kahou/Documents/readlineProj'

// Použite metódu stat().
fsObj. stat ( testPath , ( chyba , statObj ) => {
ak ( ! chyba ) {
ak ( statObj. isFile ( ) ) {
konzola. log ( ' \n Áno! Poskytnutá cesta vedie k súboru? ' ) ;
}
inak ak ( statObj. isDirectory ( ) ) {
konzola. log ( ' \n Áno! Poskytnutá cesta vedie do adresára? ' ) ;
}
}
inak
hodiť chyba ;
} ) ;

Vysvetlenie vyššie uvedeného kódu je uvedené nižšie:

  • Najprv importujte súbor „ fs “ a uložte jeho inštanciu do “ fsObj “premenná. Vytvor ' testPath ” premenná, ktorá ukladá cestu poskytnutú testerom.
  • Teraz vyvolajte „ stat() “ a prejsť metódou “ testPath ” ako prvý parameter a funkcia spätného volania ako druhý parameter.
  • Funkcia spätného volania obsahuje „ chyba “ ako prvý parameter a “ statObj “ ako druhý. ' chyba ” obsahuje chyby, ktoré vzniknú počas vykonávania a “startObj” má zadanú cestu.
  • Vo vnútri funkcie použite „ ak “, ktorý sa spustí, ak sa nenájde žiadna chyba.
  • ' vnorené ak „príkazy sa používajú na priradenie „ isFile() “ a „ isDirectory() “metódy s “ statObj “.
  • Ak metódy vrátia „ pravda ” až potom sa táto sekcia vykoná a podľa toho sa zobrazia správy o úspechu.

Po vykonaní vyššie uvedeného skriptu sa terminál zobrazí takto:

Ako vidíte, poskytnutá cesta je teraz zistená a potvrdzuje, že poskytnutá cesta vedie do adresára.

Záver

Ak chcete zistiť, či poskytnutá cesta je cestou k adresáru alebo súboru v NodeJs, metódy „ isFile() “ a „ isDirectory “ sa používajú. Cesty, ktoré sú prístupné týmito metódami, poskytuje „ statSync() “ a „ stat() “metódy “ fs Modul NodeJs. Tieto metódy ukladajú poskytnuté cesty synchrónnym a asynchrónnym spôsobom. Tento blog vysvetľuje postup na zistenie, či poskytnutá cesta vedie k súboru alebo adresáru v NodeJS.