Hoe kan ik het opgegeven pad detecteren is een bestand of map in Node.js?

Hoe Kan Ik Het Opgegeven Pad Detecteren Is Een Bestand Of Map In Node Js



Het detecteren van de bestandsentiteit is vooral belangrijk wanneer uw toepassingen zich bezighouden met het beheer van een bestand of gebruikersgegevens in specifieke mappen opslaan. Omdat enkele mappen meerdere bestanden kunnen bevatten, omvat de bewerking die daarop kan worden toegepast het verplaatsen van bestanden naar een andere map of het verwijderen van alle bestanden die zich daarin bevinden.

Hetzelfde geldt voor een bestand; de bewerkingen ervan kunnen bestaan ​​uit het wijzigen van het bestand, het invoegen van gegevens in het bestand of het verwijderen van een enkel bestand. De hele applicatie zal in de war raken als de ontwikkelaar bestandsbewerkingen op mappen toepast of omgekeerd.

Dit artikel illustreert de benaderingen om te detecteren of het opgegeven pad een bestand of een map is door deze methoden te behandelen:







Hoe kan ik het opgegeven pad detecteren is een bestand of map in Node.js?

Er zijn twee methoden die worden geboden door de “ fs ”module namelijk” isDirectory() ' En ' isBestand() ', die als enige doel heeft om te controleren of het opgegeven pad naar een bestand of map leidt. Deze methoden worden gebruikt in zowel synchrone als asynchrone scenario's met behulp van de “ statSync() ' En ' stat() methoden. Deze twee methoden worden hieronder gedemonstreerd om te detecteren of het opgegeven pad naar een bestand of map leidt.



Methode 1: De “statSync()”-methode om het pad naar de map of het bestand te detecteren

De ' statSync() 'methode aangeboden door de “ fs ”module wordt in principe gebruikt om synchrone bewerkingen uit te voeren. Deze methode slaat in ons geval de instantie van het opgegeven pad slechts één keer op. Vervolgens wijst het de “ isDirectory() ' En ' isBestand() ”methoden om terug te geven of het opgegeven pad naar een map of bestand leidt.



Laten we het onderstaande codefragment bekijken voor de praktische implementatie van de “statSync()” -methode:





const fsObj = vereisen ( 'fs' ) ;

laat padbestand = fsObj. statSync ( '/Users/kahou/Documenten/readlineProj/mcu.db' ) ;

troosten. loggen ( 'Wordt er een pad opgegeven dat naar een bestand leidt? ' + padBestand. isBestand ( ) ) ;

padDir = fsObj. statSync ( '/Gebruikers/kahou/Documenten/readlineProj' ) ;

troosten. loggen ( 'Wordt het opgegeven pad naar een directory geleid? ' + padDir. isDirectory ( ) ) ;

De uitleg voor de hierboven verstrekte code vindt u hieronder:

  • Importeer eerst de “ fs ”-module en sla de instantie ervan op in een “ fsObj Variabel.
  • Roep dan de “ statSync() ”-methode met behulp van de “ fsObj 'variabele en geef het geselecteerde pad tussen haakjes door. Bewaar de referentie van dit pad in de “ padBestand Variabel.
  • Wijs vervolgens de “ isBestand() 'methode met de' padBestand ” om een ​​Booleaanse waarde terug te geven die aangeeft of het opgegeven pad naar een bestand leidt of niet.
  • Roep daarna opnieuw de “ statSync() '-methode en passeer het nieuwe pad.
  • Voeg ten slotte de “ isDirectory() ”methode met de waarde die wordt geretourneerd door de “ startSync() methode.

Voer nu het huidige bestand uit met behulp van de onderstaande opdracht:



'knooppunt '

We hebben bijvoorbeeld het bestand “app.js” uitgevoerd:

De uitvoer toont de waarde van “ WAAR ” wordt geretourneerd, betekent dat de opgegeven paden voor de map gelden en dat het bestand is gedetecteerd.

Methode 2: De “stat()”-methode om het pad naar de map of het bestand te detecteren

Een andere methode die perfect werkt voor de asynchrone omgeving staat bekend als de “ stat() 'methode die wordt aangeboden door de' fs ”module. Het gebruikt ook dezelfde “ isBestand() ' En ' isDirectory() '-methoden, maar vanwege het asynchrone karakter ervan kan het enkele pad aan beide methoden worden doorgegeven. Het heeft twee parameters: de eerste slaat het pad op en de tweede is een callback-functie die enkele bewerkingen uitvoert via het opgegeven pad:

const fsObj = vereisen ( 'fs' ) ,
testpad = '/Gebruikers/kahou/Documenten/readlineProj'

// Gebruik de stat()-methode
fsObj. stat ( testpad , ( fout , statObj ) => {
als ( ! fout ) {
als ( statObj. isBestand ( ) ) {
troosten. loggen ( ' \N Ja! Opgegeven pad leidt naar een bestand? ' ) ;
}
anders als ( statObj. isDirectory ( ) ) {
troosten. loggen ( ' \N Ja! Opgegeven pad leidt naar een directory? ' ) ;
}
}
anders
gooien fout ;
} ) ;

De uitleg voor de hierboven verstrekte code wordt hieronder weergegeven:

  • Importeer eerst de “ fs ”-module en sla de instantie ervan op in een “ fsObj Variabel. Maak een ' testPad 'variabele die het door de tester opgegeven pad opslaat.
  • Roep nu de “ stat() ”-methode en geef de “ testPad ” als de eerste parameter en een callback-functie als de tweede parameter.
  • De terugbelfunctie bevat “ fout ” als de eerste parameter en “ statObj ' als de tweede. De ' fout ” bevat fouten die optreden tijdens de uitvoering en “startObj” heeft het opgegeven pad.
  • Gebruik binnen de functie de “ als ”-instructie die wordt uitgevoerd als er geen fout wordt gevonden.
  • De ' genest als ”-verklaringen worden gebruikt om de “ isBestand() ' En ' isDirectory() ” methoden met “ statObj ”.
  • Als de methoden retourneren “ WAAR Alleen dan wordt die sectie uitgevoerd en worden de succesberichten dienovereenkomstig weergegeven.

Na het uitvoeren van het bovenstaande script ziet de terminal er als volgt uit:

Zoals u kunt zien, wordt het opgegeven pad nu gedetecteerd en wordt bevestigd dat het opgegeven pad naar een map leidt.

Conclusie

Om te detecteren of het opgegeven pad het pad is van een map of bestand in NodeJs, zijn de methoden van “ isBestand() ' En ' isDirectory ' worden gebruikt. De paden die toegankelijk zijn via deze methoden worden geleverd door de “ statSync() ' En ' stat() 'methoden van de' fs 'NodeJs-module. Deze methoden slaan de aangeboden paden respectievelijk op synchrone en asynchrone wijze op. In deze blog wordt de procedure uitgelegd om te detecteren of het opgegeven pad naar een bestand of map in NodeJS leidt.